目录
一. 带参数请求数据
二. 参数 params
三. 简析Request Headers
总结
爬虫文章专栏
一. 带参数请求数据
1.1 什么是带参数请求数据
1)确定数据所在页面
- 点开第0个请求(第0个请求⼀般都会是html),没有我们想要的评论信息。
- 那么就到 XHR 中查找(小Tips:先把Network面板清空,再点击⼀下精彩评论的点击加载更多,看看有没有多出来的新XHR,多出来的那⼀个,就应该是和评论相关)
- 技巧总结
2)确定数据所在位置
点开这个请求的Preview,能够在 ['comment']['commentlist'] 里找到评论列表。列表的每⼀个元素都是字典,字典里键 rootcommentcontent 对应的值,就是我们要找的评论。
确定数据所在页面链接
点击请求的Headers栏:General中的Request URL,得到以下链接(图中位置,需要的话自己实操)
点开 Query String Parametres(查询字符串参数),里面的内容正是链接请求中所附带的参数。
1.2 如何带参数请求数据
点击精彩评论的点击加载更多按钮,此时Network会多加载出更多的XHR,主要关注Name为 fcg_global_comment_h5… 的XHR。
分别点开它们的 Query String Parametres,会发现参数 pagenum 第⼀次点击加载更多的值为 1,第二第三次点击它的值就变成了 2 和 3 。
也就是说,pagenum=1 等于告诉服务器:我要歌曲信息列表第一页的数;pagenum=2:我要歌曲信息列表第二页的数据,以此类推 ...我们只需要写⼀个循环,每次循环都去更改pagenum的值,这样就能实现爬取好多好多精彩评论。
我们可以尝试这样做,实现这一点。备注:虽然这样能爬到我们的数据,但我并不推荐把所有的评论都爬取下来。一来是等待时间较长,二来虽然QQ音乐没有对爬虫做限制,但是我们也应该尽可能减少对服务器的压力。所以,循环不要超过5个。
以下我用爬取自己博客为例,给大家展示一下,代码实现如下:
二. 参数 params
requests模块⾥的requests.get()提供了⼀个参数叫params,可以让我们⽤字典的形式,把参数传进去。
我们可以把Query String Parametres⾥的内容,直接复制下来,封装为⼀个字典,传递给params。(注意:要给他们打引号,让它们变字符串)
三. 简析Request Headers
3.1 什么是 Request Headers
每⼀个请求,都会有⼀个Requests Headers,我们把它称作请求头。它⾥⾯会有⼀些关于该请求的基本信息,比如:这个请求是从什么设备什么浏览器上发出?这个请求是从哪个页面跳转而来?
- user-agent(用户代理)会记录你电脑的信息和浏览器版本;
- origin(源头)和referer(引用来源)则记录了这个请求,最初的起源是来自哪个页面。它们的区别是referer会⽐origin携带的信息更多些;
如果我们想告知服务器,我们不是爬⾍是⼀个正常的浏览器,就要去修改user-agent。 倘若不修改,那么这⾥的默认值就会是Python,会被浏览器认出来。⽽对于爬取某些特定信
息,也要求你注明请求的来源,即origin或referer的内容。
3.2 如何添加 Request Headers
Requests模块允许我们去修改Headers的值。点击它的官方文档,搜索“user-agent”,你会看到:
import requests
# 引用requests模块
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}
res_articles = requests.get('',headers=headers)
# 调用get方法,下载评论列表
json_articles = res_articles.json()
# 使用json()方法,将response对象,转为列表/字典
list_title = json_articles['data']['list']
# 一层一层地取字典,获取评论列表
for article in list_title:
# list_comments是一个列表,comment是它里面的元素
print(article['title'])
# 输出评论
print('-----------------------------------')
# 将不同的评论分隔开来
如上,只需要封装一个字典就好了。和写params非常相像。
而修改
origin
或referer
也和此类似,一并作为字典写入headers就好。就像这样:
总结
程序员写代码并不是从0开始的,我们也是需要借助多个模板拼接,使得代码能够实现我们的想法,而且也并非默写出来,毕竟学习编程是开卷学习,开卷使用,本文介绍了网页爬虫带参数请求数据的具体需求与步骤,而且应该注意的是本文的代码不一定一直具有有效性,毕竟爬虫与防爬也在一直进步,但本文爬虫的模板概念的介绍还是一直有效的,希望对你有帮助,加油,希望你我一同走进爬虫的世界~~
欢迎大家留言一起讨论问题~~~
注:本文是参考风变编程课程资料(已经授权)及部分百度资料整理所得,系博主个人整理知识的文章,如有侵权,请联系博主,感谢~