js 抓取网页内容(网页的内容由前端的JS动态生成,我们应该如何对网页进行爬取? )
优采云 发布时间: 2021-09-21 07:29js 抓取网页内容(网页的内容由前端的JS动态生成,我们应该如何对网页进行爬取?
)
这文章将在有关如何使用Python来生成JS生成的页面详细讲解,小编感觉很实用,所以分享给大家做一个参考,希望大家在读这文章收获。
页面
在我们爬网之前,大多是静态的HTML生成的内容,将能够找到数据以及他们可以直接从HTML源代码看到的内容,但不是所有页面都是这样的。
在前端JS动态生成的内容有一些网站的内容,因为web上的内容由js生成,我们可以在浏览器上看到它,但在html源代码中不能找到它。例如,今天的头条新闻:
呈现浏览器的页面就是如下:
查看源代码,就像这样:
在HTML源代码中找不到网页的新闻,这些代码全部由JS加载。
我遇到这种情况,我们应该如何爬上网?有两种方式:
1、world从网页响应返回的json数据; 2、使用Selenium模拟网页
一、worked从网页响应js脚本
返回的JSON数据
即使通过动态生成的js加载Web内容,JS也需要根据接口返回的JSON数据调用接口和加载并呈现。
所以我们可以找到由js调用的数据界面,并找到从数据界面到网页中呈现的最后一个数据。
今天拍摄顶部条形:
1、 @数据数码数据请请数码数码(数码数据)
f12打开web调试工具
选择网络选项卡后,找到很多响应,我们过滤它,只看XHR响应。
(xhr是ajax中的概念,指示xmlhttproquest
然后我们发现了很多链接,只需单击外观:
我们选择城市,预览中有一个字符串JSON数据:
让我们看看:
这一切都在城市列表中,应该用于装载区域新闻。
现在我知道如何找到JS请求的界面?但我只是没有找到你想要的新闻,然后再发现它:
有一个焦点,让我们看看:
呈现主页图片新闻的数据是相同的,那么数据应该在此。
查看其他链接:
这应该是热门搜索@ g5 @
这是图片新闻下面的新闻。
我们打开一个接口链接以查看:
返回一串乱码,但从响应是正常的编码数据:
具有相应的数据接口,我们可以在以前的方法中对数据接口进行响应,
2、请求和解析数据接口数据
要完成代码:
# coding:utf-8
import requests
import json
url = 'http://www.toutiao.com/api/pc/focus/'
wbdata = requests.get(url).text
data = json.loads(wbdata)
news = data['data']['pc_feed_focus']
for n in news:
title = n['title']
img_url = n['image_url']
url = n['media_url']
print(url,title,img_url)
返回的结果如下:
代码分为四个部分
第1部分:引入相关库
# coding:utf-8
import requests
import json
第2部分:数据接口的HTTP请求
url = 'http://www.toutiao.com/api/pc/focus/'
wbdata = requests.get(url).text