【安全合规】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("保存完毕")


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


相关文章
|
12天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
13天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
22天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
27天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
13天前
|
JSON 前端开发 JavaScript
Python中如何判断是否为AJAX请求
AJAX请求是Web开发中常见的异步数据交互方式,允许不重新加载页面即与服务器通信。在Python的Django和Flask框架中,判断AJAX请求可通过检查请求头中的`X-Requested-With`字段实现。Django提供`request.is_ajax()`方法,Flask则需手动检查该头部。本文详解这两种框架的实现方法,并附带代码示例,涵盖安全性、兼容性、调试及前端配合等内容,帮助开发者提升Web应用性能与用户体验。
33 0
N..
|
8月前
|
XML JSON 前端开发
jQuery实现Ajax
jQuery实现Ajax
N..
81 1
|
8月前
|
XML 前端开发 JavaScript
jQuery中ajax如何使用
jQuery中ajax如何使用
102 0
|
8月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
176 0
|
7月前
|
前端开发 JavaScript
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
杨校老师课堂之基于Servlet整合JQuery中的Ajax进行表单提交[基于IDEA]
58 0
|
5月前
|
XML JSON 前端开发
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
AJAX是什么?原生语法格式?jQuery提供分装好的AJAX有什么区别?
39 0