Python爬虫5简介: 获取JS动态内容抓取当今的头条新闻
优采云 发布时间: 2020-08-07 15:11
我们之前抓取的网页主要是HTML静态生成的内容. 您可以直接从HTML源代码中找到看到的数据和内容. 但是,并非所有网页都是这样.
某些网站的内容是由前端JS动态生成的. 由于网页上显示的内容是由JS生成的,因此我们可以在浏览器中看到它,但是无法在HTML源代码中找到它. 例如,今天的头条新闻:
浏览器呈现的网页如下:
今天的头条新闻
检查源代码,但是看起来像这样:
HTML源代码
在HTML源代码中找不到该网页的新闻,所有这些都是由JS动态生成和加载的.
在这种情况下,我们应该如何抓取网页?有两种方法:
1. 从网页响应中找到JS脚本返回的JSON数据; 2,使用Selenium模拟对网页的访问
这里仅介绍第一种方法. 有一篇关于硒的使用的特别文章.
1. 从网页响应中找到JS脚本返回的JSON数据
即使Web内容是由JS动态生成和加载的,JS也需要调用一个接口,并根据该接口返回的JSON数据进行加载和呈现.
因此,我们可以找到JS调用的数据接口,并从数据接口中找到网页中显示的最后数据.
以今天的头条新闻为例进行演示:
1. 找到JS请求的数据接口
F12打开Web调试工具
Web调试工具
选择“网络”标签后,我们发现响应很多. 让我们进行过滤,仅查看XHR响应.
(XHR是Ajax中的一个概念,表示XMLHTTPrequest)
然后我们发现缺少很多链接,只需单击一个链接即可查看:
我们选择城市,预览中有一串json数据:
让我们再次单击它:
事实证明,它们都是城市列表,应用于加载区域新闻.
现在您可能了解如何找到JS请求的接口,对吗?但是,现在我们找不到所需的新闻,因此请再次查找:
有一个焦点,让我们单击它以查看: