分析AJAX的爬虫项目:腾讯新闻

腾讯新闻

腾讯新闻网页是标准的ajax加载网页,我们要通过chrome的开发者工具,监控网络请求,并分析。目标是爬取https://news.qq.com/ 的热点精选 ,“热点精选”至少爬50个出来,存储成csv 每一行至少包括标号(从1开始),标题,链接,…。

requests和selenium各来一遍~

requests:
首先观察“热点精选”的js,有三个变化的参数,其中expIds像是每一个异步加载区域内图片的id组合,但是我找了一圈没有找到expIds的位置
在这里插入图片描述

观察到ajax的js中request url的组成,构建data参数集合,结果却报错
在这里插入图片描述
直接组合url,并且忽略找不到的expIds,响应结果包含了异步的html,于是可以开始定位
在这里插入图片描述然后利用正则与json把响应结果变成字典的形式
在这里插入图片描述
依据json中的信息,来解析
在这里插入图片描述
于是可以得到单个ajax 加载部分的想要摘取的数据,其中要注意global count
在这里插入图片描述
最后把一个个部分封装成函数,循环10个异步加载,并将数据写入csv
在这里插入图片描述
最后得到10个异步加载共100条“热点精选”信息
在这里插入图片描述
selenium:
对于一个异步加载的网页,selenium最重要的是需要操作网页右边的滚动条,对应下方代码的第2-3行,同理用xpath定位文章和图片,获取需要的元素
在这里插入图片描述
最后设置循环,累计将滚动条下滑20次,并将需要的元素,写入csv
在这里插入图片描述
最后是selenium爬取腾讯新闻的结果展示,也是爬了100项
在这里插入图片描述

知乎爬虫

https://www.zhihu.com/search?q=Datawhale&utm_content=search_history&type=content
用requests库实现,不能用selenium,不仅要爬出第一页的内容,而且要爬出所有的内容,给的链接仅仅是第一页的内容,该链接需要登录。ajax加载用requests完成爬取,通过Chrome的开发者工具,分析出ajax。

requests:
我的目标是把知乎上Datawhale相关的所有信息抓取下来,就是把滚动条一直往下滚动,知道没有信息了为止。因为数据量比较大,可以将爬取数据存入mongodb非关系型数据库。

首先打开网页与Chrome检查,并动态地下拉滚动条,分别看看JS和XHR里面有哪些新增项,于是在XHR里看到了一个个batch和一个name形似url的响应,点开一看,里面正好是我要的这一个mini_batch的所有信息,于是对比几个相似响应的request url,发现只有几个参数有变化。
在这里插入图片描述
变化的参数
同时这两个参数的变化规律也很简单,开始爬取。我发现,即使加了cookie、设置了代理依旧被反爬了,所以一定是有什么加密参数没有解析出来。
在这里插入图片描述
后续根据前辈的介绍,查找了两种解决思路,一种是直接鲁js与设置验证码识别,涉及到很多前端方面的知识,另一种是用DecryptLogin库,目前这两种方案分别存在‘无法识别exports’和‘缺少标识符’的bug没有解决,我会继续努力,争取早日拿下知乎。
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值