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

简介: 昨天有小伙伴找我,新浪新闻的国内新闻页,其他部分都是静态网页可以抓到,但是在左下方的最新新闻部分,不是静态网页,也没有json数据,让我帮忙抓一下。
+关注继续查看

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

抓取目标

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

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

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

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

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

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

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

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

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

开始写代码

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

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

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

先用replace函数剔除url中\ \,即可得到url,后面的\ \ u4e09则是unicode编码,可以直接解码得到内容,直接写代码了

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

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

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

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

后记

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

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

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

相关文章
|
2天前
|
JavaScript
jQuery学习(四)— jQuery的ready事件和原生JS的load事件的区别
jQuery学习(四)— jQuery的ready事件和原生JS的load事件的区别
|
2天前
|
JavaScript 前端开发
JavaScript学习(六十三)—typeof和instanceof检测数据类型的异同
JavaScript学习(六十三)—typeof和instanceof检测数据类型的异同
|
17天前
|
JavaScript 前端开发 测试技术
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
JavaScript测试和调试工具:学习使用测试框架(如Jasmine、Mocha)对JavaScript代码进行单元测试
|
17天前
|
自然语言处理 JavaScript 前端开发
javascript的ES6详解及语法学习
javascript的ES6详解及语法学习
|
18天前
|
存储 JavaScript 前端开发
javascript基本语法学习(变量、数据类型、操作符、条件语句、循环)
javascript基本语法学习(变量、数据类型、操作符、条件语句、循环)
|
18天前
|
设计模式 JavaScript 前端开发
如何学习JavaScript语法和概念,附上详细的步骤和建议
如何学习JavaScript语法和概念,附上详细的步骤和建议
|
18天前
|
机器学习/深度学习 JavaScript 前端开发
一条通用的javascript学习路径
一条通用的javascript学习路径
|
20天前
|
JavaScript
js学习之call和apply
js学习之call和apply
14 0
js学习之call和apply
|
1月前
|
JSON JavaScript 前端开发
10个学习JavaScript的理由
10个学习JavaScript的理由
|
2月前
|
算法 JavaScript 前端开发
JavaScript学习 -- RSA算法应用实例及公钥私钥的生成方法
JavaScript学习 -- RSA算法应用实例及公钥私钥的生成方法
28 0
相关产品
云迁移中心
推荐文章
更多