Chromeless 初体验

昨天偶然间翻到了一个叫Chromeless的Github项目,今天花了一小时看了下文档,并写了个demo分享出来,也许对未来做爬虫有帮助。

什么是Chromeless?

居于Chrome Headless 做了一层封装,通过api调用操作chrome浏览器(点击,输入,打开网站等等)

什么是Chrome Headless ?

详细:http://www.jianshu.com/p/b01de206a0d7

Chromeless有啥用?

1. 并行执行1000次浏览器集成测试(Run 1000s of browser integration tests in parallel)
2. 抓取网页并自动截图
3. 编写需要真实留你浏览器环境的机器人
4. 以前PhantomJS,NightmareJS或Selenium能做的事几乎能做

没看懂?
个人理解适用场景: 适合爬虫工具

安装要求:

  1. node 版本 8.2+
  2. chrome 版本 60+

安装:

npm install chromeless

来个Demo

const { Chromeless } = require('chromeless');

async function run() {
    const chromeless = new Chromeless();

    const screenshot = await chromeless
        // 打开百度
        .goto('https://www.baidu.com')
        // 定位name为wd的输入框,并输入chromeless
        .type('chromeless', 'input[name="wd"]')
        // 点击id为su 元素
        .click('#su')
        // 等待 id为content_left元素加载
        .wait('#content_left')
        // 截图
        .screenshot();
    // 打印本地文件路径或者S3 URL
    console.log(screenshot);
    // 结束
    await chromeless.end()
}

run().catch(console.error.bind(console));

运行:

Chromeless 可以在本地chrome或者远程到 AWS Lambda 的Chrome 上运行,上面例子在本地执行后结果,输出一张截图,打开截图确实为百度搜索页面:

Paste_Image.png

无头模式:

win环境:

  1. 先设置chrome启动为--headless
    cd "C:\Program Files (x86)\Google\Chrome\Application"
    chrome --remote-debugging-port=9222 --disable-gpu --headless
  2. 再次执行上面脚本,发现浏览器不启动了,但结果还是正常输入。

github:
https://github.com/graphcool/chromeless

更多API:
https://github.com/graphcool/chromeless/blob/master/docs/api.md

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • 2014年我在派出所工作。当时参加工作时间不长,但是却经历了一件至今仍记忆犹新的事情。 一、报警电话 七月份,闷热...
    青山石阅读 3,610评论 0 0
  • 一直最喜欢的就是下午洗头然后在阳光中晒干 今天终于享受到了 太爽了
    越流阅读 1,202评论 0 0
  • 入营第一天,她们很少表现出来想家的念头,对于这种全日制的生活方式,我相信她们可以坚持下来 虽...
    陈雪彤阅读 2,985评论 3 1
  • 本人女汉子一枚,真真切切,彻头彻尾,从名字到内在,从小到大,女汉子的性格锻造了我骑单车载妹子的各种传奇。 杰哥我搭...
    Chinesejessica阅读 2,860评论 1 0