js 抓取网页内容(网页的内容由前端的JS动态生成,我们应该如何对网页进行爬取? )

优采云 发布时间: 2021-09-21 07:29

  js 抓取网页内容(网页的内容由前端的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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线