nightmare 模拟点击更多按钮,,怎么做??
发布于 8 年前 作者 Jackzhangpan 8235 次预览 最后一次回复是 8 年前 来自 问答
比如我要获取网易新闻的内容,因为是动态的,用nightmare,,但不知道怎么模拟获取更多??
var Nightmare = require('nightmare');
var nightmare = Nightmare({show:false})
nightmare
.goto('http://news.163.com/')
.inject('js', 'jquery.min.js')
.type(这里应该怎么写) -------???
.click(怎么写?) --------????
.evaluate(function () {
var newsList=[];
$('.data_row').each(function () {
var $me=$(this);
var title=$me.find('.news_title').find('h3').find('a').text();
var url=$me.find('.news_title').find('h3').find('a').attr('href');
var item={
title:title,
url:url
}
newsList.push(item);
})
return newsList
})
.end()
.then(function (result) {
console.log(result);
})
.catch(function (err) {
console.log(err);
})
21 回复
@atian25 @i5ting
自己分析对应页面的源码,要不就找到对应的函数直接在 evaluate 调用,要不就对这个按钮模拟 click 事件。
@atian25 ,我写了click(’.load_more_btn’),但是还没有加载更多信息。网上搜了很久没找到例子,我想知道怎么去写这个click事件,,原谅我只是一个小白。
@godghdai 感谢感谢。
@godghdai 请问一下 我这种情况 .wait(function() {}里面该怎么写 ,我写的报错
这个是爬取链接https://www.youtube.com/playlist?list=PLHPTxTxtC0iaN9kA37m6MRrxFkgby2CDR
https://www.youtube.com/playlist?list=PLHPTxTxtC0iaN9kA37m6MRrxFkgby2CDR
@zhoujinhai
@godghdai 非常感谢,问题解决啦!刚接触nightmare,请问下有没有好一点儿的教程适合我这种小白的,嘿嘿
@godghdai ,我也想请问下,根据不同需求,不同的点击等事件,要怎么去分析,nightmare官网的APi ??还是有其他博客或者js教程??谢谢
@zhoujinhai @Jackzhangpan
看官网api
每间隔段时间都会调用wait方法,直到wait返回true,在wait方法里面根据dom检查,一般三个状态,加载中(return false),可以加载更多(click,return false),加载完毕(return true)
@godghdai 好的 谢谢啦
@godghdai ,你好大神,又来请求你的帮助,像这个模拟点击下一页的问题?怎么分析去写?谢谢。
@Jackzhangpan
@godghdai 谢谢谢谢。受教了,有时候分析不同页面还是一头雾水。
@godghdai 学习一下先
这个问题有意思
@godghdai 你好,不好意思又来问啦!对于其他网页模拟下一页的时候,像您15楼那样,要是找不到相应的JS文件的话,我想通过每点击一次下一页,然后获取一次页面信息,直到点到最后一页,我试了下 http://roll.news.qq.com/,但一直显示wait等待超时?请问一下,这样是我这思路不行还是代码问题!
@zhoujinhai 模拟点击下一页也是可以的,只是没有上一种方法快,
@godghdai 嗯嗯 是的,非常感谢!!!