浅谈如何使用python抓取网页中的动态数据实现


Posted in Python onAugust 17, 2020

我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的。所以也就引出了什么是动态数据的概念,动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到浏览器后动态生成的,而之前并没有的。

在编写爬虫进行网页数据抓取的时候,经常会遇到这种需要动态加载数据的HTML网页,如果还是直接从网页上抓取那么将无法获得任何数据。

今天,我们就在这里简单聊一聊如何用python来抓取页面中的JS动态加载的数据。

给出一个网页:豆瓣电影排行榜,其中的所有电影信息都是动态加载的。我们无法直接从页面中获得每个电影的信息。

如下图所示,我们无法在HTML中找到对应的电影信息。

浅谈如何使用python抓取网页中的动态数据实现

浅谈如何使用python抓取网页中的动态数据实现

在Chrome浏览器中,点击F12,打开Network中的XHR,我们来抓取对应的js文件来进行解析。如下图:

浅谈如何使用python抓取网页中的动态数据实现

在豆瓣页面向下拖拽,使得页面加载入更多的电影信息,从而我们可以抓取对应的报文。

我们可以看到它采用的是AJAX异步请求。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。因此就可以在不重新加载整个网页的情况下,对网页的某部分进行更新,从而实现数据的动态载入。

浅谈如何使用python抓取网页中的动态数据实现

我们可以看到,通过GET,我们得到的response之中包含了所对应的电影相关信息,它们以JSON的格式保存在一起。

浅谈如何使用python抓取网页中的动态数据实现

查看一下RequestURL信息,我们可以发现在action参数之后又跟了两个参数"start"和"limit",很显然它们的意思是:"从某个位置开始返回的电影的个数"。

如果想快速获取相关的电影信息,就可以直接把这个URL复制进地址栏,修改你所需要的start和limit参数值,将得到对应的结果进行抓取即可。

但是这样显得很不自动化,而且很多其他网站的RequestURL并不给的这么直接,所以我们接下来用python进行进一步的操作来获取这个返回的报文信息。

#coding:utf-8
import urllib
import requests

post_param = {'action':'','start':'0','limit':'1'}
return_data = requests.get("https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90",data =post_param, verify = False)
print return_data.text

因为豆瓣是https的,所以我们在此处需要稍微注意一下,将verify置为False表示不需要验证SSL证书。

我们可以发现打印出的结果中就是对应的JSON文件,下一步的解析和操作在这里就不赘述了。

[{"rating":["9.6","50"],"rank":1,"cover_url":"https://img3.doubanio.com\/view\/movie_poster_cover\/mpst\/public\/p480747492.jpg","is_playable":true,"id":"1292052","types":["犯罪","剧情"],"regions":["美国"],"title":"肖申克的救赎","url":"https:\/\/movie.douban.com\/subject\/1292052\/","release_date":"1994-09-10","actor_count":15,"vote_count":713205,"score":"9.6","actors":["蒂姆·罗宾斯","摩根·弗里曼","鲍勃·冈顿","威廉姆·赛德勒","克兰西·布朗","吉尔·贝罗斯","马克·罗斯顿","詹姆斯·惠特摩","杰弗里·德曼","拉里·布兰登伯格","尼尔·吉恩托利","布赖恩·利比","大卫·普罗瓦尔","约瑟夫·劳格诺","祖德·塞克利拉"],"is_watched":false}]

到此这篇关于浅谈如何使用python抓取网页中的动态数据实现的文章就介绍到这了,更多相关python抓取网页动态数据 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中dir函数用法分析
Apr 17 Python
Windows下python2.7.8安装图文教程
May 26 Python
深入浅析python定时杀进程
Jun 06 Python
Python实现的求解最小公倍数算法示例
May 03 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python类和对象的定义与实际应用案例分析
Dec 27 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
OpenCV 模板匹配
Jul 10 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
详解Python 中的容器 collections
Aug 17 #Python
Python 解析库json及jsonpath pickle的实现
Aug 17 #Python
Python实现爬取网页中动态加载的数据
Aug 17 #Python
Python 如何操作 SQLite 数据库
Aug 17 #Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 #Python
Python 通过正则表达式快速获取电影的下载地址
Aug 17 #Python
Python 程序员必须掌握的日志记录
Aug 17 #Python
You might like
WHOIS类的修改版
2006/10/09 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
利用Python查看目录中的文件示例详解
2017/08/28 Python
详解supervisor使用教程
2017/11/21 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
北京银河万佳Java面试题
2012/03/21 面试题
门卫班长岗位职责
2013/12/15 职场文书
七一表彰活动方案
2014/01/18 职场文书
ktv筹备计划书
2014/05/03 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
作风整顿剖析材料
2014/09/30 职场文书
财务务虚会发言材料
2014/10/20 职场文书
督导岗位职责
2015/02/04 职场文书
酒会开场白大全
2015/06/01 职场文书
小学生安全教育主题班会
2015/08/12 职场文书