首页  >  问答  >  正文

python + selenium + chromedriver 如何实现无界面爬取

在使用selenium爬取12306的过程中,发现使用phantomjs无法爬取,使用chromedriver就可以,应该是phantomjs被网站检测出来后封禁了,使用chromedriver又会显示界面,爬取效率低。
现在有两点疑问,google了好久都没找到有效的解决方法
1.如何伪装phantomjs,尽最大可能的伪装
2.如何设置chromedriver,使其不显示界面,或者还有什么其他方法提高爬取效率

感谢!!!

迷茫迷茫2711 天前848

全部回复(2)我来回复

  • PHP中文网

    PHP中文网2017-05-18 10:55:13

    通过PyVirtualDisplay可以实现你的需求,大概代码就是这样:

    #!/usr/bin/env python
    
    from pyvirtualdisplay import Display
    from selenium import webdriver
    
    display = Display(visible=0, size=(800, 600))
    display.start()
    
    # now Firefox will run in a virtual display. 
    # you will not see the browser.
    browser = webdriver.Chrome()
    browser.get('http://www.baidu.com')
    print browser.title
    browser.quit()
    
    display.stop()
    

    不知道你修改过phantomjs的头信息没有,可以通过

    from selenium import webdriver
    options = webdriver.ChromeOptions()
    options.add_argument('lang=zh_CN.UTF-8')
    options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
    browser = webdriver.Chrome(chrome_options=options)
    url = "https://baidu.com"
    browser.get(url)
    browser.quit()
    

    这种方式修改phantomjs的头部信息,这个也可以试试

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-18 10:55:13

    可以参考鄙人的文章在headless模式下运行selenium

    回复
    0
  • 取消回复