前言
欢迎来到鄙人小站:Parksi
Python作为一种十分受欢迎的语言,得益于活跃,强大的的第三方库十分合适用来开发爬虫。然而现在许多动态网页并不能通过类似
requests
库来进行爬取,而需要用到更高级的无头浏览器
,然而还有一种捷径
,或者说更彻底的方法,寻找该网页获取数据的接口
。
XHR
XHR
全称XMLHttpRequest
XMLHTTP是一组API函数集,可被JavaScript、JScript、VBScript以及其它web浏览器内嵌的脚本语言调用,通过HTTP在浏览器和web服务器之间收发XML或其它数据。XMLHTTP最大的好处在于可以动态地更新网页,它无需重新从服务器读取整个网页,也不需要安装额外的插件。该技术被许多网站使用,以实现快速响应的动态网页应用。例如:Google的Gmail服务、Google Suggest动态查找界面以及Google Map地理信息服务。
XMLHTTP是AJAX网页开发技术的重要组成部分。
除XML之外,XMLHTTP还能用于获取其它格式的数据,如JSON或者甚至纯文本。
本段摘自维基百科
怎么获取?
我们以Bilibili直播间基本信息获取为目标,开始学习。
首先用浏览器打开示例网页:https://live.bilibili.com/936475
然后按F12
或者打开开发者工具
以下以chrome为主,Edge为辅介绍
点击Network
或网络
切换完毕后,按F5刷新,重新加载资源。
重新加载后选择筛选XHR资源
进入“快速选择”我起的名词
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iEZbRbEJ-1586337652768)(https://s1.ax1x.com/2020/04/07/GgH3Rg.png)]
接着使用键盘上的↑
与↓
切换资源,注意观察右侧的资源内容!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XZLmNHUh-1586337652769)(https://s1.ax1x.com/2020/04/07/GgbRXj.png)]
我该如何复用?
用此方法获取的链接有可能
与请求链接有关系。
示例:
观察你拿到的链接:https://api.live.bilibili.com/xlive/web-room/v1/index/getInfoByRoom?room_id=936475
与请求链接:https://live.bilibili.com/936475
很容易发现两个链接后面的数字相同,那是直播间的房间号。
下一步做什么?
分析。分析你获得的数据,例子中的XHR是json类型,使用json可视化工具可以更直观地获取你需要的数据。尝试更多的实验,发现json中的字段代表着什么。
后记
某些大公司会在控制台放一些福利
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dhcmPKyp-1586337652772)(https://s1.ax1x.com/2020/04/07/GgLesJ.png)]
加油吧!总有一天你会出人头地的。只要你肯努力。