nodejs爬虫笔记(五)---利用nightmare模拟点击下一页

本文介绍如何使用Nightmare库在Node.js中模拟点击下一页,以爬取腾讯滚动新闻的所有页面信息。文章详细分析了页面结构,提出两种思路:一是通过总页数判断,二是依据下一页类名变化。最终通过实践验证,成功获取了所有新闻数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

  腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息。首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题也很多,多亏大神的指点。

一、选择模拟的原因

  腾讯滚动新闻,是每六十秒更新一次,而且有下一页。要是直接获取页面的话得一页一页的获取,不太方便,又想到了找数据接口,然后通过请求得到数据,结果腾讯新闻的数据接口是加密的,这种想法又泡汤了。因而想到笔记(四)中模拟加载更多的模块,看利用nightmare这个模块模拟点击下一页,是不是就可以获取全部新闻的信息了呢。

二、分析页面

  打开腾讯滚动新闻页面,通过浏览器点击检查,选择页码部分内容(如图),此时是第一页,上一页的类名是"na",下一页的类名是是"f12",再点击第二页的时候会发现上一页和下一页的类名都是"f12",要选择下一页,可以利用Jquery选择器中过滤元素的方法,如:$('#pageArea .f12:contains("下一页")'),这样就可以选择点击下一页了。从下图可以看到页面去还有页面总数,因此可以获取页面总数,然后通过页面总数做一个点击的判断,直到点击到最后一页。再点击到最后一页,会发现下一页的类名会变成"na",因此,我们也可以通过下一页的类名变化判断是否点击到了最后一页。

                

三、思路一(利用总页数)

  1、在nightmare的wait方法里面等待页面加载完成。

  2、之后获取总页数,没点击一次,总页数就减一,直到最后一页,点击完成,wait方法才返回true。

  在文件目录下新建qqnightmare.js(需要安装相关模块),编辑如下代码:

var Nightmare = require('nightmare');       
var nightmare = Nightmare({ 
	show: true//显示electron窗口
});

nightmare
	//加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值