之前我们访问的都是html页面,但是在现实开发中很多页面都是通过ajax请求获取并且展示数据的,今天我们来学习如何获取页面中的ajax请求返回的信息。
![657aef0529662ebcbae0af533f232bdc.png](https://i-blog.csdnimg.cn/blog_migrate/856b1614ef896b5ed99d2e233d36ec84.jpeg)
分析
先打开一个网站,通过chrome工具中的network的xhr选项可以看到对应的ajax请求。
![b5760fc145a6e30563b94143284e6798.png](https://i-blog.csdnimg.cn/blog_migrate/a1a790b52441548d04b1c2d6616bc496.jpeg)
请求如下
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start=0
可以看到返回的json文件
![ed884817077edb3117f2f7250bbecb26.png](https://i-blog.csdnimg.cn/blog_migrate/5f60c4692da7c02c98167a03f644c2fe.jpeg)
这些jason文件是我们需要获取的最终信息。
编码
这里主要是多ajax的请求进行分析,实际上需要传入一个参数就可以了。page_limit是指的每页有多少数据,page_start是指从第几页可以请求。我们这里对page_start进行修改就好了。生成一个死循环,退出的条件是返回的数据为空。但是,这里是测试,我加了一个计数器,到了10的时候就退出了。免得对别人的网站造成影响。
提供代码给大家参考
from urllib.request import Request, urlopenfrom fake_useragent import UserAgentbase_url ="https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start={}"i = 0while True: headers = { "User-Agent": UserAgent().chrome } url = base_url.format(i * 20) request = Request(url, headers=headers) response = urlopen(request) info = response.read().decode() print(info) if info == "" or info is None or i==10: print("got all of data") break i += 1 print("get "+ str(i) + " page")
测试结果
![5a0f13866e6b4b1e483d28a8b3199dd3.png](https://i-blog.csdnimg.cn/blog_migrate/6a28ba06262179b8b5fe12be2fa6b606.jpeg)
返回了每个页面的数据。以后如果需要对ajax请求数据就可以用这种方法。
喜欢的朋友帮我转发,谢谢各位。