本文共 1550 字,大约阅读时间需要 5 分钟。
由于PhantomJs已经停止了更新和维护,所以推荐使用谷歌无头浏览器,是一款无界面的谷歌浏览器
from selenium import webdriverfrom time import sleepfrom selenium.webdriver.chrome.options import Options""" 实现无可视化界面的操作 """chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')browser = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options)# 无可视化界面(无头浏览器)browser.get('https://www.baidu.com')print(browser.page_source)sleep(3)browser.quit()
现在不少网站都有对selenium采取了监测机制,比如正常情况下我们用浏览器访问淘宝等网站的window.navigator.webdriver
的值为 undefined
,而使用 selenium访问则该值为 true
,那么如何解决这个问题呢?
只需要设置chromedriver的启动参数即可解决。在启动chromedriver之前,为chromedriver开启实验性功能参数excludeSwitches
,它的值为['enable-automation']
,示例代码如下:
from selenium.webdriver import Chromefrom selenium.webdriver import ChromeOptionsoption = ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])driver = Chrome(option=option)
完整代码如下:
from selenium import webdriverfrom time import sleepfrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver import ChromeOptions""" 实现无可视化界面的操作 """chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')""" 实现规避检测 """option = ChromeOptions()option.add_experimental_option('excludeSwitches', ['enable-automation'])browser = webdriver.Chrome(executable_path='./chromedriver', chrome_options=chrome_options, options=option)# 无可视化界面(无头浏览器)browser.get('https://www.baidu.com')print(browser.page_source)sleep(3)browser.quit()
转载地址:http://akiwi.baihongyu.com/