python中selenium使用chrome无头浏览器执行JavaScript(js)代码

收藏

随着越来越多的web数据都是经过js处理的,对于爬虫来说就有这很大的难度,一般情我们使用selenium+phantomjs来去解析执行js,但是自2017  4月份后selenium不再维护phantojs接口,所以我么需要找一个替换的方式,好在chrome以及Firefox也提供了无界面操作方式

回答

MrSun回答

解答:

  1. 准备工作:
    1. windows:
          chrome浏览器更新到59版本以上
          下载并安装chromedriver 下载地址:https://sites.google.com/a/chromium.org/chromedriver/ 下载对应版本的webdriver,下载后的webdriver驱动放置到我们的python安装目录或者放置到其他设置了环境变量的目录中
           更新安装selenium到最新版本:  pip install -U selenium
           安装完成后需要重启电脑,否则可能出现问题
    2. ubuntu
          由于ubuntu默认安装的chrome版本最高到50 你需要手动更新chrome到最新版本,下载安装包并安装 下载地址https://www.google.com/chrome/thankyou.html?platform=linux&statcb=1&installdataindex=defaultbrowser
          下载并安装chromedriver 下载地址:https://sites.google.com/a/chromium.org/chromedriver/ 下载对应版本的webdriver  webdriver 放到/usr/local/bin 中或者其他设置了环境变量的目录
         更新安装selenium到最新版本 :    pip install -U selenium
  2.        python selenium 驱动chrome无界面浏览器(chrome headless),其使用方式与Phantomjs 基本差不多,代码如下:
    from selenium import webdriver
    
    # 创建chrome参数对象
    opt = webdriver.ChromeOptions()
    
    # 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
    opt.set_headless()
    
    # 创建chrome无界面对象
    driver = webdriver.Chrome(options=opt)
    
    # 访问百度
    driver.get('https://baidu.com/')
    
    #打印内容
    driver.page_source

     

  3. chrome headless 命令行模式参考网址:https://developers.google.com/web/updates/2017/04/headless-chrome 

(4)

提交成功