Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程

昨天有小伙伴找我,新浪新闻的国内新闻页,其他部分都是静态网页可以抓到,但是在左下方的最新新闻部分,不是静态网页,也没有json数据,让我帮忙抓一下。大概看了下,是js加载的,而且数据在js函数中,很有意思,就分享出来给大家一起看看!

抓取目标

今天我们的目标是上图红框部分,首先我们确定这部分内容不在网页源代码中,属于js加载的部分,点击翻页后也没有json数据传输!

但是发现有个js的请求,点击请求,是一行js函数代码,我们将其复制到json的视图查看器中,然后格式化一下,看看结果

发现里面有可能存在我们需要的内容,比如url、title、intro这3个参数,猜测就是对应的新闻URL、标题、简介

只是其内容,需要在进行处理一下,我们写到代码中看看

开始写代码

先导入库,因为最终需要从字符串中截取部分,所以用requests库获取请求,正则re匹配内容即可。然后我们先匹配出上述3项

可以看到,url中存在\\,标题和简介是以"\u7684\u5317\u4e0a"的形式存在,这些就是我们需要处理的下一步了!

先用replace函数提出url中\\,即可得到url,后面的"\u7684\u5317\u4e0a"则是unicode编码,可以直接解码得到内容,直接写代码了

解码用了eval函数,内容为u'unicode编码内容'的形式即可解码!

这样,就取出了本页的所有新闻和URL的相关内容,在外层加上循环,即可抓取所有的新闻页,任务完成!

后记

新浪新闻的页面js函数比较简单,可以直接抓到数据,如果是比较复杂的函数的话,就需要深入理解前端知识了,这也是为什么学爬虫,需要学习前端知识的原因!

ps:上文所用的json查看器是第三方的网站,直接百度即可找到很多,当然也可以直接将上述抓包的内容修改,然后用json读取数据也是可以的!

基本代码没有多少,如果有看不清楚的小伙伴,可以私信我获取代码或者一起研究爬虫哦!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

python2.7进行爬虫百度POI代码(划分小网格算法)

查询许久,最终选择一个,之前一直py3.6不成功,换了2.7就好多了。如果有重复去下重即可。 这里面非常重要的基类对象的init()方法与超类方法,将在下面进行...

50370
来自专栏大史住在大前端

【Recorder.js+百度语音识别】全栈方案技术细节

技术栈:React+recorder-tool.js +recorder.js + Express + Baidu语音识别API

54930
来自专栏更流畅、简洁的软件开发方式

【开源】QuickPager 分页控件的内部结构,和OO原则与设计模式

关键字:提出需求、需求分析、原则、设计模式、索引      先说一下讨论的范围:使用数据库保存信息的项目,b/s结构,asp.net编写。请不要讨论这个范围之外...

21860
来自专栏向前进

【踩坑】activiti工作流的svg-xml解析报错

1、问题记录   工作流配置画模板的时候保存成功但是部署报错。   IE下 activiti工作流解析xml报错 type "path" must be fol...

40640
来自专栏封碎

Android的webview研究

最近做的项目大量用到了 webview ,用网页来布局。 Android 的 webview 是基于 webkit 内核,不过他的运行效果和 firefox 上...

13610
来自专栏开源优测

AutoLine开源平台简明教程

当前已经默认集成了RobotFramework一下关键字,关键字的用法完全同RobotFramework

14830
来自专栏深度学习之tensorflow实战篇

python2.7进行爬虫POI代码(划分小网格算法)

查询许久,最终选择一个,之前一直py3.6不成功,换了2.7就好多了。如果有重复去下重即可。 这里面非常重要的基类对象的init()方法与超类方法,将在下面进行...

289110
来自专栏猿人谷

PHP程序员应该掌握的10个技能

php程序员应该掌握的10个技能,看看你都掌握了哪些:   1、语法:必须熟练掌握 ,写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语...

24270
来自专栏云计算教程系列

如何在Python 3中安装pygame并创建用于开发游戏的模板

Pygame库是专门为了帮助您做出的游戏和其他多媒体应用Python编程语言的一个开放源代码模块。pygame 构建于高度可移植的SDL(Simple Dire...

80920
来自专栏企鹅号快讯

Python实现一个带图形界面的爬虫

Python 是一个很简介高效的语言,许多的 Python 爱好者(包括我在内)都很喜欢用 Python 做爬虫,为什么会喜欢写爬虫,我对爬虫的感觉就是:它能给...

64650

扫码关注云+社区

领取腾讯云代金券