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