java爬虫抓取网页数据(新浪新闻国内新闻页静态网页数据在函数中的应用)
优采云 发布时间: 2021-10-04 23:35java爬虫抓取网页数据(新浪新闻国内新闻页静态网页数据在函数中的应用)
昨天,一个朋友来找我。新浪新闻国内新闻页面的其他部分是静态网页,但左下方的最新新闻部分不是静态网页,也没有json数据。让我帮你抓住它。大概看了一下,是js加载的,数据在js函数里,很有意思,所以分享给大家看看!
抓取目标
我们今天的目标是上图的红框部分。首先我们确定这部分内容不在网页源码中,属于js加载的部分,点击翻页后没有json数据传输!
但是发现有一个js请求,点击请求,是一行js函数代码,我们复制到json的view viewer中,然后格式化看看结果
发现可能有我们需要的内容,比如url、title、intro这3个参数,猜测是对应的新闻网址、标题、介绍
只是它的内容,需要处理,我们写在代码里看看
开始写代码
先导入库,因为需要截取字符串的最后一部分,所以使用requests库来获取请求,重新匹配内容即可。然后我们先匹配上面的3个item
可以看到,url中有\\,标题和介绍都是\\u539f\\u6807\\u9898的形式。这些是我们需要处理的后续步骤!
先用replace函数把\\放在url里,就可以得到url了,下面的\\u539f\\u6807\\u9898是unicode编码,可以直接解码内容直接写code
使用eval函数进行解码,可以将内容解码成u'unicode编码内容'的形式!
这样就把这个页面上所有新闻和URL相关的内容都取出来了,在外层加了一个循环来爬取所有的新闻页面,任务就完成了!
后记
新浪新闻的页面js功能比较简单,可以直接抓取数据。如果是比较复杂的功能,就需要了解前端知识。这就是学习爬虫需要学习前端知识的原因!
ps:上面使用的json查看器是第三方的网站,你可以直接百度找很多,当然你也可以直接修改上面抓包的内容,然后用json读取数据!
基本代码不多。有看不清楚的小伙伴可以私信我索取代码或者一起研究爬虫!