目录

一. 带参数请求数据

二. 参数 params

三. 简析Request Headers

总结

爬虫文章专栏


一. 带参数请求数据

1.1 什么是带参数请求数据


1)确定数据所在页面



  • 点开第0个请求(第0个请求⼀般都会是html),没有我们想要的评论信息。


python无头爬虫 爬虫header_学习



  • 那么就到 XHR 中查找(小Tips:先把Network面板清空,再点击⼀下精彩评论的点击加载更多,看看有没有多出来的新XHR,多出来的那⼀个,就应该是和评论相关)


python无头爬虫 爬虫header_学习_02


  •  技巧总结


python无头爬虫 爬虫header_爬虫_03


2)确定数据所在位置

        点开这个请求的Preview,能够在 ['comment']['commentlist'] 里找到评论列表。列表的每⼀个元素都是字典,字典里键 rootcommentcontent 对应的值,就是我们要找的评论。


python无头爬虫 爬虫header_python_04


确定数据所在页面链接

点击请求的Headers栏:General中的Request URL,得到以下链接(图中位置,需要的话自己实操)


python无头爬虫 爬虫header_学习_05



        点开 Query String Parametres(查询字符串参数),里面的内容正是链接请求中所附带的参数。

1.2 如何带参数请求数据

        点击精彩评论的点击加载更多按钮,此时Network会多加载出更多的XHR,主要关注Name为 fcg_global_comment_h5… 的XHR。

python无头爬虫 爬虫header_python_06

        分别点开它们的 Query String Parametres,会发现参数 pagenum 第⼀次点击加载更多的值为 1,第二第三次点击它的值就变成了 2 和 3 。

python无头爬虫 爬虫header_经验分享_07

        也就是说,pagenum=1 等于告诉服务器:我要歌曲信息列表第一页的数;pagenum=2:我要歌曲信息列表第二页的数据,以此类推 ...我们只需要写⼀个循环,每次循环都去更改pagenum的值,这样就能实现爬取好多好多精彩评论。

 我们可以尝试这样做,实现这一点。备注:虽然这样能爬到我们的数据,但我并不推荐把所有的评论都爬取下来。一来是等待时间较长,二来虽然QQ音乐没有对爬虫做限制,但是我们也应该尽可能减少对服务器的压力。所以,循环不要超过5个。

以下我用爬取自己博客为例,给大家展示一下,代码实现如下:


二. 参数 params

        requests模块⾥的requests.get()提供了⼀个参数叫params,可以让我们⽤字典的形式,把参数传进去。

python无头爬虫 爬虫header_python_08

        我们可以把Query String Parametres⾥的内容,直接复制下来,封装为⼀个字典,传递给params。(注意:要给他们打引号,让它们变字符串)


三. 简析Request Headers

3.1 什么是 Request Headers

        每⼀个请求,都会有⼀个Requests Headers,我们把它称作请求头。它⾥⾯会有⼀些关于该请求的基本信息,比如:这个请求是从什么设备什么浏览器上发出?这个请求是从哪个页面跳转而来?

python无头爬虫 爬虫header_爬虫_09

  • user-agent(用户代理)会记录你电脑的信息和浏览器版本;
  • origin(源头)referer(引用来源)则记录了这个请求,最初的起源是来自哪个页面。它们的区别是referer会⽐origin携带的信息更多些;

        如果我们想告知服务器,我们不是爬⾍是⼀个正常的浏览器,就要去修改user-agent。 倘若不修改,那么这⾥的默认值就会是Python,会被浏览器认出来。⽽对于爬取某些特定信

息,也要求你注明请求的来源,即origin或referer的内容。

3.2 如何添加 Request Headers

        Requests模块允许我们去修改Headers的值。点击它的官方文档,搜索“user-agent”,你会看到:

python无头爬虫 爬虫header_python无头爬虫_10

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非常相像。

而修改originreferer也和此类似,一并作为字典写入headers就好。就像这样:


总结

        程序员写代码并不是从0开始的,我们也是需要借助多个模板拼接,使得代码能够实现我们的想法,而且也并非默写出来,毕竟学习编程是开卷学习,开卷使用,本文介绍了网页爬虫带参数请求数据的具体需求与步骤,而且应该注意的是本文的代码不一定一直具有有效性,毕竟爬虫与防爬也在一直进步,但本文爬虫的模板概念的介绍还是一直有效的,希望对你有帮助,加油,希望你我一同走进爬虫的世界~~

        欢迎大家留言一起讨论问题~~~


注:本文是参考风变编程课程资料(已经授权)及部分百度资料整理所得,系博主个人整理知识的文章,如有侵权,请联系博主,感谢~