博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs之nightmare的使用--网络爬虫---论坛灌水
阅读量:4289 次
发布时间:2019-05-27

本文共 1497 字,大约阅读时间需要 4 分钟。

参考: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;

你可能感兴趣的文章
python 构造http请求对象-Request对象
查看>>
解决Ubuntu16.04更新源时显示“暂时不能解析域名”问题
查看>>
Ubuntu16.04运行清空文件命令时提示权限不够解决方法
查看>>
shell脚本编写笔记
查看>>
Ubuntu16.04实现定时免密远程拷贝脚本
查看>>
Ubuntu 16.04安装Docker
查看>>
Docker报错:Temporary failure in name resolution&Proxy Authentication Required
查看>>
mySQL常用操作及基础知识
查看>>
Ubuntu16.04安装python3.6
查看>>
linux安装Anaconda
查看>>
Ubunu16.04安装CPU版本Tensorflow
查看>>
conda常用命令和基础知识整理
查看>>
ImportError: libgfortran.so.4: cannot open shared object file: No such file or directory
查看>>
Django搭建网站笔记
查看>>
不抱怨的世界
查看>>
运动减肥篇
查看>>
自己测到的Buu IP
查看>>
yum配置与使用(很详细)
查看>>
yum的使用
查看>>
./configure 的配置和用法
查看>>