【安全合规】python爬虫从0到1 -ajax的get请求进阶

简介: python爬虫从0到1 -ajax的get请求进阶

前面说到获得了第一页的数据。而我们要获得后面的数据时,它们的url地址并不一样。详见下图:


> 第一页网址https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%A7%91%E5%B9%BB&sort=time&

> page_limit=20&page_start=0

>

> 第二页网址https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%A7%91%E5%B9%BB&sort=time&

> page_limit=20&page_start=20

>

> 第三页网址https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%A7%91%E5%B9%BB&sort=time&

> page_limit=20&page_start=40

>

> 当page为           1   2   3     4时

> page_start为     0  20  40     60

>

> 则可以找到规律 page_limit = 20 不变,而 page_start = (page-1) * 20


在这里找到规律之后我们就可以开始,下面附上源码:



import urllib.request

import urllib.parse



#定制请求对象

def get_request(page):

   url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%A7%91%E5%B9%BB&sort=time&'

   data ={

       'page_limit':'20',

       'page_start':(page-1)*20

   }

   data = urllib.parse.urlencode(data)

   url = url + data

   headers = {

       'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}

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

   return request



#返回响应数据

def get_response(request):

   response = urllib.request.urlopen(request)

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

   return content


#将数据下载到本地

def download(page,content):

   with open('豆瓣电影排行榜' + str(page) + '.json' ,'w' ,encoding=('utf-8')) as fp:

       fp.write(content)



#通常表示程序的入口

if __ name__ == '__ main__':

   star_page = int(input('请输入起始页:'))

   end_page = int(input('请输入结束页:'))

   for page in range(star_page,end_page+1):


  #对每一页都进行请求对象的定制

       request = get_request(page)

#返回响应数据

       content = get_response(request)

#将数据下载到本地

       download(page,content)


print("保存完毕")


有不懂或者不足的地方欢迎在评论区提出,感谢大家支持!!


相关文章
|
7月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
284 13
|
2月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略
|
8月前
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
3月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
6月前
|
前端开发 JavaScript
AJax(XHR+Get和Post+AJax的封装)
AJax(XHR+Get和Post+AJax的封装)
175 15
|
5月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
187 9
|
7月前
|
数据采集 Web App开发 文字识别
Python爬虫多次请求后被要求验证码的应对策略
Python爬虫多次请求后被要求验证码的应对策略
|
8月前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
11月前
|
存储 应用服务中间件 开发工具
对象存储OSS-Python设置代理访问请求
通过 Python SDK 配置 nginx 代理地址请求阿里云 OSS 存储桶服务。示例代码展示了如何使用 RAM 账号进行身份验证,并通过代理下载指定对象到本地文件。
484 15

推荐镜像

更多
下一篇
oss云网关配置