python抓取动态网页(以爬取中国电影网中国票房排行前500为例讲解下获取动态数据的一般步骤)

优采云 发布时间: 2021-11-12 07:21

  python抓取动态网页(以爬取中国电影网中国票房排行前500为例讲解下获取动态数据的一般步骤)

  1.简介

  说到抓取网页,我们一般的操作是先查看源码或者查看元素,找到信息所在的节点,然后使用beautifulsoup/xpth/re获取数据。这是我们处理静态网页的常用方式。

  但是大家都知道,现在的网页大部分都是动态的,就是通过js渲染来加载数据的。处理静态网页的那一套就不太满意了。因此,掌握爬取动态加载数据的方法是非常有必要的。NS。

  下面以爬取中国电影网中国票房500强排名为例,说明获取动态数据的一般步骤。

  2.示例和步骤

  2.1 首先打开数据页面,右键选择review元素,然后选择Network——>XHR,可以​​看到现在里面什么都没有了。

  

  2.2 然后点击浏览器的刷新按钮或者按F5刷新页面,可以看到出现了一条数据,这个链接是获取数据的页面API,选择Response,可以看到它是以 Json 格式返回的数据,收录了我们需要的所有信息。

  

  2.3 点击页面的下一页,获取更多的数据,以便找到它们之间的联系。

  

  可以看到,只有图片上几个数据链接的最后一个页码不同,所以不要太友好!复制链接并保存作为代码模拟的参考。

  2.4 知道了数据链路之间的关系,我们可以在代码中进行模拟。比如我们要获取前50页的信息,可以这样写。

   for i in range(1, 51, 1):

src = 'http://www.cbooo.cn/Mdata/getMdata_movie?area=50&type=0&year=0&initial=%E5%85%A8%E9%83%A8&pIndex=' + str(i)

getHtml(src)

  2.5 通过上面的操作,我们得到了返回的数据,但是返回的数据是Json格式的,所以我们需要解析它,然后从中获取每部电影的ID(可以找到每部电影都是这样的格式:后面的数字就是电影的ID,这是我们需要从返回的Json数据中获取的。)获取到ID后,形成电影链接,然后静态的操作页。

  import requests

import json

def getHtml(src):

html = requests.get(src).content.decode('utf-8')

for con in json.loads(html)['pData']:

url = 'http://www.cbooo.cn/m/' + str(con['ID'])

newhtml = requests.get(url).content.decode('utf-8')

  3.总结

  获取动态数据的关键是找到“从页面获取数据的API”,然后找到数据链接之间的关系,然后对返回的数据进行分析,得到需要的数据。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线