浅谈如何使用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中列表和元组的相关语句和方法讲解
Aug 20 Python
Python分析学校四六级过关情况
Nov 22 Python
Python基于SMTP协议实现发送邮件功能详解
Aug 14 Python
详解Python下Flask-ApScheduler快速指南
Nov 04 Python
Python常用数据类型之间的转换总结
Sep 06 Python
适合Python初学者的一些编程技巧
Feb 12 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 Python
使用scrapy实现增量式爬取方式
Jun 21 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
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python基础练习之用户登录实现代码分享
2017/11/08 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
追悼会子女答谢词
2014/01/28 职场文书
四年大学生活的自我评价范文
2014/02/07 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
好的旅游活动方案
2014/08/19 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
小学班主任个人总结
2015/03/03 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
python Django框架快速入门教程(后台管理)
2021/07/21 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers