1.背景

需要去爬一个香港的电子元件供应商网站的库存数据,但使用PHP的get_file_content出现403,使用CURL则提示你的浏览器不支持JS和Cookie,被认定为robot了。 然后使用Python3+Selenium+ChromeDriver,在windows上成功爬到数据!

2.问题

但是放到Linux上面运行时,因为linux无GUI,所以需要用到webdriver的option里的headless,结果又被识别为Robot了(也是提示你的浏览器不支持JS和Cookie)。。网上找了很多方法,都无法解决。

3.解决

最后,不使用ChromeDriver,改为使用FirefoxDriver (geckodriver),问题解决!成功可以使用headless在linux上爬到数据!

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

def getHtml(url):
    options = Options()
    option.add_argument('--headless')#静默
    option.add_argument('--proxy-server=http://127.0.0.1:3096')#加代理

    driver = webdriver.Firefox(executable_path ="/usr/local/bin/geckodriver", options=options)
    driver.get(url)
    print(driver.page_source)

4.其他

Firefox(版本查看方法:firefox --version)和geckodriver版本对应参考:

https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html

geckodriver 下载地址:

https://github.com/mozilla/geckodriver/releases