zoukankan      html  css  js  c++  java
  • 爬虫的终极形态:nightmare

    爬虫的终极形态:nightmare

    nightmare 是一个基于 electron 的自动化库(意思是说它自带浏览器),用于实现爬虫或自动化测试。相较于传统的爬虫框架(scrapy/pyspider),或者dom操作库(cheerio/jsdom),或者基于浏览器的自动化框架(selenium/phantomjs),他的优势在于提供了一个简洁有效 的编程模型。

    来看官网给出的一个对比场景:

    同样是实现一个向yahoo自动提交关键词并搜索的功能

    1. PhantomJS实现

    2. nightmare实现

    怎么玩

    安装

    涉及到下载并编译一个electron,你国网速下需耐心等待

    配置 options

    实例化

    交互用的API

    简单介绍几个:

    • .goto(url[, headers]) 跳转到url
    • .viewport(width, height) 浏览器窗口大小
    • .wait(selector) 等待某个dom元素出现
    • .click(selector) 点击某个dom元素
    • .type(selector[, text]) 在某个dom元素中输入
    • .inject(type, file) 在页面上挂载 js/css 文件内容
    • .evaluate(fn[, arg1, arg2,...]) 在客户端注入JS脚本并执行,从而实现electron模型下的C/S互动及数据交换
    • ……

    自动登录并轮询的例子

    有那么一个网站(比如叫chagang.site),在我登录进去后,会不定时的查岗,需要点击一个按钮以证明没有离线,怎么用nightmare实现自动挂机呢?

    大概分这么几步走:

    1. 先跳转到该网站
    2. 模拟输入帐号信息后点击submit
    3. 登录后等待主界面加载出现
    4. 在客户端起一个定时器,2秒一次轮询那个查岗按钮,发现就模拟点击

    好像也没有多难 :)

    小结

    本文只涉及到API中的一小部分,宝贝都在文档里。用 nightmare,就是希望借助这种简洁模型的梳理,相对愉悦的实现自动化交互(至于标题,终归是意义过剩的产物,请忽略他的招摇。

  • 相关阅读:
    Eclipse中添加MyEclipse插件
    用GWT开发的HelloGWT程序
    GWT module 'xxx' may need to be (re)compiled解决办法
    GWTDesigner_v5.1.0破解码
    Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]
    工程师们,不要想一辈子靠技术混饭吃
    PHP生成类似类似优酷、腾讯视频等其他视频链的ID
    (外挂破解)Cheat Engine(内存修改工具)V6.2中文版软件介绍
    ucos-ii核心算法分析(转)
    Websocket,ProtoBuffer,Hightlight,JSON 等,最近遇到的一些知识点小结
  • 原文地址:https://www.cnblogs.com/Unknw/p/6422158.html
Copyright © 2011-2022 走看看