爬虫:带参数请求数据,如何查询字符串参数,分析url结构,服务器如何判断爬虫和普通用户的

如果仅仅只是拿到十几首歌曲的相关信息,实际上并不能满足我们的需求。

爬取很多很多歌曲,而不只是爬取十几个。

我们以歌曲《七里香》作为案例,去爬取它的歌曲评论:

在Get到“爬取《七里香》评论”的技能后,我们会再回到爬取更多歌曲的项目当中。就好像你在玩游戏时,会先到新手村杀小怪涨经验再出村解锁新地图一样,爬取评论就是我们用来练手的“新手村”。

当然了,如果你开心,我们还可以把“爬取歌词”作为练习。

在这个过程当中,我们会学到带参数请求数据的知识,以及关于Request Headers的知识。

分析过程

你可能会疑惑,为什么不能直接爬取周杰伦的更多歌曲,来吧,先来打开偶像的qq音乐搜索链接:

QQ音乐开放平台 - 闪耀,从这里开始

如果仔细观察页面的内容,你可能会摇摇头,认为爬取更多的歌曲信息是一个不可能完成的任务,因为如今的qq音乐已经不支持更多歌曲的翻阅功能,正常访问的途径都没有了,我们的“虫”(代码)上哪爬取去?

退而求其次,咱们来看看评论这边的情况,目前qq音乐的评论页面结构是这样的:

评论区分成了两部分,分别是精彩评论最新评论,精彩评论可以通过点击加载更多获得更多数据,最新评论则需要翻页来进行数据更新。

也就是说,爬取更多的评论数据的难点似乎在翻页点击加载更多

显然这种数据的加载模式还是我们上一关熟悉的“动态加载”,即点击一个按钮(加载更多或者第n页),服务器就会根据新的XHR更新页面信息。

这样一来,若我们想要获得更多的评论数据,就需要:1️⃣点击按钮获得新的XHR 2️⃣根据新的XHR获得json数据 3️⃣解析json数据,如此循环往复,直至精神崩溃。

如果python有情绪,它的脸上现在肯定写满了嫌弃和拒绝。所以,看在python的面上,只要我们能找到每个请求之间的规律,这种重复的工作就交给它了好吗?

相比较爬取我们“看不见”(更多歌曲信息)的数据,评论这个能通过点击页码加载更多按钮看到更多数据的“柿子”看起来比较软一点,就先捏它吧~

不过,解决评论的问题,需要用到“带参数请求数据”。学会这个,所有的问题都不再是问题。

什么是带参数请求数据

我不知道你有没有认真地观察过一个完整url的组成,如果没有,我们现在来试试看:

当你在豆瓣搜索“海边的卡夫卡”,它的网址会是这样:

搜索: 海边的卡夫卡

当你在知乎搜索“宇宙大爆炸”,它的网址会是这样:

宇宙大爆炸 - 搜索结果 - 知乎

现在,我要揭晓规律:

在上面,我们能看到每个url都由两部分组成。前半部分大多形如:https://xx.xx.xxx/xxx/xxx

后半部分,多形如:xx=xx&xx=xxx&xxxxx=xx&……

两部分使用?来连接。举例刚刚的豆瓣网址,前半部分就是:

后半部分则是:q=%E6%B5%B7%E8%BE%B9%E7%9A%84%E5%8D%A1%E5%A4%AB%E5%8D%A1

它们的中间使用了?来隔开。

这前半部分是我们所请求的地址,它告诉服务器,我想访问这里。而后半部分,就是我们的请求所附带的参数,它会告诉服务器,我们想要什么样的数据。

这参数的结构,会和字典很像,有键有值,键值用=连接;每组键值之间,使用&来连接。

就像豆瓣。我们请求的地址是

而我们的请求所附带的参数是“海边的卡夫卡”:q=%E6%B5%B7%E8%BE%B9%E7%9A%84%E5%8D%A1%E5%A4%AB%E5%8D%A1(那段你看不懂的代码,它是“海边的卡夫卡”使用utf-8编码的结果)。

技能点学满了吧?那现在,我们要以《七里香》为例,爬取用户的精彩评论

首先,进入网址:

七里香 - 周杰伦 - QQ音乐-千万正版音乐海量无损曲库新歌热歌天天畅听的高品质音乐平台!

打开Network,选中All,点击刷新。

我们说到,第0个请求一般都会是html。我们点开第0个请求来看看(看PreviewResponse都可以),看里面有没有我们想要的评论信息。 

显然是没有的。我们现在去看XHR

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光少年.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值