美文网首页我爱编程瞎折腾
在ubuntu服务器上使用Chrome Headless

在ubuntu服务器上使用Chrome Headless

作者: Shuangquan | 来源:发表于2017-08-24 12:08 被阅读1482次

    Install Google Chrome

    几个月前发布的Chrome 59 beta推出了headless模式。原生的Chrome,更好的通用性,更快的速度……似乎是时候和Phantomjs、Ghost们说再见了。搜索一圈发现大多数人都是在桌面版的linux或者mac上尝了鲜,然而要将Chrome用于web2.0爬虫的的话,还是得在服务器版的linux中运行。
    安装chrome

    测试环境: Ubuntu 16.04如果是桌面版的ubuntu,直接到官网下载最新版chrome安装就好。对于服务器版的chrome,只能用命令行安装服务器版本Chrome

    sudo apt-get install libxss1 libappindicator1 libindicator7
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo dpkg -i google-chrome*.deb  # Might show "errors", fixed by next line
    sudo apt-get install -f
    

    测试

    启动chrome

     google-chrome --headless --remote-debugging-port=9222 https://chromium.org --disable-gpu
    

    这里是使用headless模式进行远程调试,ubuntu上大多没有gpu,所以--disable-gpu以免报错。之后使用另一个命令行访问本地的9222端口:

      curl http://localhost:9222
    

    能够看到调试信息应该就是装好了。

    下载chromedriver

    chromedriver提供了操作chrome的api,是selenium控制chrome的桥梁。[下载链接]https://sites.google.com/a/chromium.org/chromedriver/downloads]查看最新的Chrome版本。下载并解压:

      wget https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
      unzip chromedriver_linux64.zip
    

    运行
    这里我们直接用selenium来控制chrome在headless模式下运行:

       utf-8fromseleniumimportwebdriverchrome_options=webdriver.ChromeOptions()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')client=webdriver.Chrome(chrome_options=chrome_options,executable_path='/home/chromedriver')# 如果没有把chromedriver加入到PATH中,就需要指明路径client.get("https://jiayi.space")content=client.page_source.encode('utf-8')printcontentclient.quit()
    

    当然这里是打印出了页面的内容。之后我找了一个以前爬过的网站来试试,它做了js加密重定向,而且检测到phantomjs请求直接丢弃。结果Chrome headless成功拿到渲染后的页面。基于简单的测试后,感觉一切都还很完美。还不知道在生产环境下有没有什么bug,遇到再更新咯。

    相关文章

      网友评论

        本文标题:在ubuntu服务器上使用Chrome Headless

        本文链接:https://www.haomeiwen.com/subject/cbasdxtx.html