前言

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为辅介绍
GgTU6s.png
GgTyhF.png
点击Network网络
切换完毕后,按F5刷新,重新加载资源。
重新加载后选择筛选XHR资源
Gg7SN8.png
Gg7VH0.png
进入“快速选择”我起的名词
Gg7obq.png
GgH3Rg.png
接着使用键盘上的切换资源,注意观察右侧的资源内容!
GgbRXj.png
GgbIA0.png

我该如何复用?

用此方法获取的链接有可能与请求链接有关系。
示例:
观察你拿到的链接:https://api.live.bilibili.com/xlive/web-room/v1/index/getInfoByRoom?room_id=936475
与请求链接:https://live.bilibili.com/936475
很容易发现两个链接后面的数字相同,那是直播间的房间号。

下一步做什么?

分析。分析你获得的数据,例子中的XHR是json类型,使用json可视化工具可以更直观地获取你需要的数据。尝试更多的实验,发现json中的字段代表着什么。

后记

某些大公司会在控制台放一些福利
GgLEzF.png
GgLesJ.png
加油吧!总有一天你会出人头地的。只要你肯努力。