浅谈如何使用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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
Jun 14 Python
Python打包可执行文件的方法详解
Sep 19 Python
python操作mysql数据库
Mar 05 Python
Apache如何部署django项目
May 21 Python
用matplotlib画等高线图详解
Dec 14 Python
python字符串string的内置方法实例详解
May 14 Python
带你认识Django
Jan 15 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 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
Yii框架关联查询with用法分析
2014/12/02 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
php经典趣味算法实例代码
2020/01/21 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
Angular2利用组件与指令实现图片轮播组件
2017/03/27 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
2014年社区植树节活动方案
2014/02/28 职场文书
主管竞聘书范文
2014/03/31 职场文书
开门红主持词
2014/04/02 职场文书
精神文明建设标语
2014/06/16 职场文书
学习保证书
2015/01/17 职场文书
签订劳动合同通知书
2015/04/16 职场文书
运动会100米加油稿
2015/07/21 职场文书
python内置进制转换函数的操作
2021/06/02 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技