浅谈如何使用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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
简单谈谈python中的语句和语法
Aug 10 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Python使用Pickle模块进行数据保存和读取的讲解
Apr 09 Python
使用python判断jpeg图片的完整性实例
Jun 10 Python
python SQLAlchemy 中的Engine详解
Jul 04 Python
python实现图片中文字分割效果
Jul 22 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
详解python算法常用技巧与内置库
Oct 17 Python
如何用Python搭建gRPC服务
Jun 30 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
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
2012/02/21 面试题
门诊手术室工作制度
2014/01/30 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
民事调解书范文
2015/05/20 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python