js 爬虫抓取网页数据(新浪新闻国内新闻页静态网页数据在函数中的应用(组图))

优采云 发布时间: 2022-02-22 03:00

  js 爬虫抓取网页数据(新浪新闻国内新闻页静态网页数据在函数中的应用(组图))

  昨天,一个小伙伴来找我。新浪新闻的国内新闻页面,其他部分都是可以抓到的静态网页,但是左下角的最新新闻版块不是静态网页,也没有json数据。让我帮你抓住它。大概看过了,是js加载的,数据在js函数里,很有意思,所以分享给大家看看!

  抓取目标

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

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

  发现可能有我们需要的内容,比如url、title、intro这三个参数。猜测是对应的新闻 URL、标题和介绍。

  只是它的内容,需要处理,我们写在代码中看看

  开始写代码

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

  可以看到url中存在\\,标题和介绍的形式为\\u539f\\u6807\\u9898。这些是我们需要处理的下一步!

  先用replace函数把\\放到url中,就可以得到url,后面的\\u539f\\u6807\\u9898是unicode编码,可以直接解码内容直接写代码

  eval函数用于解码,内容可以以u'unicode编码内容'的形式解码!

  这样就将这个页面的所有新闻和URL相关的内容都取出来了,在外层加了一个循环去抓取所有的新闻页面,任务就完成了!

  后记

  新浪新闻页面的js功能比较简单,直接抓取数据即可。如果是比较复杂的功能,需要对前端知识有深刻的理解,这也是为什么在学习爬虫的时候需要学习前端知识的原因!

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

  基本代码不多。有看不清楚的小伙伴可以私信我获取代码或者一起学习爬虫!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线