开发者社区> 游客hpxpwccdlvhye> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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


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


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python进阶系列(八)
Python进阶系列(八)
30 0
Python进阶系列(九)
Python进阶系列(九)
28 0
Python进阶系列(十)
Python进阶系列(十)
23 0
Python进阶系列(十一)
Python进阶系列(十一)
19 0
Python进阶系列(十二)
Python进阶系列(十二)
19 0
Python进阶系列(六)
Python进阶系列(六)
23 0
Python进阶系列(五)
Python进阶系列(五)
32 0
Python进阶系列(十三)
Python进阶系列(十三)
44 0
Python进阶系列(十四)
Python进阶系列(十四)
33 0
Python进阶系列(十八)
Python进阶系列(十八)
28 0
77
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载