Python爬虫——ajax的Get和Post请求

Python爬虫——ajax的Get和Post请求

有些网站内容是使用ajax加载的,ajax通常返回的是JSON格式的数据,直接对ajax的 url 进行POST或GET方式请求,得到的就是JSON格式的数据。当前端页面想和后端服务器进行数据交互时就可以使用ajax。

1、Get请求

使用实例A:获得网站第一页的数据

import urllib.request
import urllib.parse

url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0&genres=%E5%8A%A8%E4%BD%9C'

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}

request = urllib.request.Request(url=url,headers=headers)

response = urllib.request.urlopen(request)

content = response.read().decode('utf-8')

#open方法默认使用gbk编码,如果文件中有汉字那么需要在open方法中指定编码格式为utf-8
file = open('douban.json','w',encoding='utf-8')
#将json格式内容写入文件
file.write(content)

执行结果:Pycharm 格式化json文件快捷键:ctrl+alt+L

在这里插入图片描述

使用实例B:获得网站前10页的数据

import urllib.request
import urllib.parse


#发送请求,返回响应对象
def create_response(page):
    url = 'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action='
    #请求参数
    date = {
        'start':(page-1)*20,
        'limit':20
    }
    #对参数进行Unicode编码
    date = urllib.parse.urlencode(date)
    url = url+date
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
    }
    #定制请求并返回响应对象
    request = urllib.request.Request(url=url,headers=headers)
    response = urllib.request.urlopen(request)
    return response

#文件下载函数
def down_file(response,page):
    #对内容utf-8解码并写入文件
    content = response.read().decode('utf-8')
    file = open('douban_'+str(page)+'.json','w',encoding='utf-8')
    file.write(content)
    file.close()


#程序的入口
if __name__ == '__main__':
    start_page = int(input('请输入起始页码:'))
    end_page = int(input('请输入结束页码:'))
    for page in range(start_page,end_page+1):
       response = create_response(page)
       down_file(response,page)

执行结果:json文件成功下载

在这里插入图片描述

2、Post请求

使用实例:获取网站前十页数据

import urllib.request
import urllib.parse

#定制请求,发送请求,返回响应对象
def create_request(page):
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
    date = {
        'cname': '广州',
        'pid': '',
        'pageIndex': page,
        'pageSize': 10
    }

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}

    #参数两次编码
    date = urllib.parse.urlencode(date).encode('utf-8')

    request = urllib.request.Request(url, date, headers)

    response = urllib.request.urlopen(request)

    return response
#下载文件到本地
def create_down(response,page):
    content = response.read().decode('utf-8')
    file = open('kendeji'+str(page)+'.json', 'w', encoding='utf-8')
    file.write(content)

if __name__ == '__main__':
    start_page = int(input('输入起始页:'))
    end_page = int(input('输入结束页:'))
    for page in range(start_page,end_page+1):
        response = create_request(page)
        create_down(response,page)

执行结果:json文件成功下载到本地

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值