必威体育Betway必威体育官网
当前位置:首页 > IT技术

nodejs之nightmare的使用--网络爬虫---论坛灌水

时间:2019-06-07 17:45:11来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

nightmare

参考:https://www.cnblogs.com/xiaxuexiaoab/p/7297509.html

 nightmare是PhantomJS的高级封装,让你能够实现浏览器自动化任务。PhantomJS 是一个基于WebKit的服务器端 JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏,以及无界面测试等。下面再贴一段官网介绍。我们可以看到速度是phantomJs的两倍,这正是我们想要的。

==============nightmareRun.js

const NightMare=require('nightmare');

const nightmare=NightMare({show:true});

var runHelp=require('runHelp');

const run=async()=>{

await.runHelp.runTimes(login,5,20000);

}

const login=async()=>{

await nightmare.goto('http://baidu.com');//跳转到http://baidu.com这个玩还在那

await nightmare.wait('#id');//引号填的是css中选择器之类的东西------wait这句话就是等到了某一个dom元素的出现

await nightmare.click('.form :nth-child(2)');//点击的是类选择器。form下面的第二个子元素

//Promise这个方法中那个先等到就返回会的值,then后面的git和node就是返回值,promise中的方法同时执行

const result=await.Promise.race({

nightmare.wait('#loginfield').then(()=>'git'),

nightmare.wait('#ss').then(()=>'node')

})

if(result==='node'){

return;

}

await nightmare.type('#loginfield','uname');//type是给dom元素输入值

await nightmare.type('#passfield','123');

await nightmare.click('#sub');//点击登录按钮

}

==============runHelp.js

//循环调用函数,时间到了要么返回数据,要么抛出异常

const runTimes=async(func,times,timeout=20000){

for(let i=0;i<times;i++){

try{

return runTimeout(func(),timeout)

}catch(e){

console.log(e.message);

}

}

}

const runTimeout=async(func,timmeout=20000){

return await.Promise.race({

func(),

new Promise((resolve,reject)=>{

setTimeout(()=>{

reject(new Error('操作超时'))

},timeout)

}),

})

}

module.export=runTimes;

相关阅读

分享到:

栏目导航

推荐阅读

热门阅读