一、如何实现无可视化界面?
先看能跳出浏览器的程序
1 from selenium import webdriver 2 from time import sleep 3 4 bro = webdriver.Chrome(executable_path='./chromedriver.exe') 5 6 bro.get(url='https://baidu.com') 7 8 print(bro.page_source) 9 sleep(2) 10 bro.quit()
再看不跳出浏览器依然可以打印出百度搜索网页代码
1 from selenium import webdriver 2 from time import sleep 3 from selenium.webdriver.chrome.options import Options 4 5 #这个是一个用来控制chrome以无界面模式打开的浏览器 6 #创建一个参数对象,用来控制chrome以无界面的方式打开 7 chrome_options = Options() 8 #后面的两个是固定写法 必须这么写 9 chrome_options.add_argument('--headless') 10 chrome_options.add_argument('--disable-gpu') 11 12 bro = webdriver.Chrome(executable_path='./chromedriver.exe',chrome_options=chrome_options) 13 #无可视化界面(无头浏览器) phantomJs(这个已经停止更新和维护了) 14 bro.get(url='https://baidu.com') 15 16 print(bro.page_source) 17 sleep(2) 18 bro.quit()
但是有些网站会检测这些请求是否是selenium发起的,那如何让selenium规避被检测的风险呢?
1 from selenium import webdriver 2 from time import sleep 3 #实现无可视化界面 4 from selenium.webdriver.chrome.options import Options 5 #实现规避检测 6 from selenium.webdriver import ChromeOptions 7 8 #这个是一个用来控制chrome以无界面模式打开的浏览器 9 #创建一个参数对象,用来控制chrome以无界面的方式打开 10 chrome_options = Options() 11 #后面的两个是固定写法 必须这么写 12 chrome_options.add_argument('--headless') 13 chrome_options.add_argument('--disable-gpu') 14 15 #实现规避检测 16 option = ChromeOptions() 17 option.add_experimental_option('excludeSwitches', ['enable-automation']) 18 19 20 21 bro = webdriver.Chrome(executable_path='./chromedriver.exe',chrome_options=chrome_options,options=option) 22 23 bro.get(url='https://baidu.com') 24 25 print(bro.page_source) 26 sleep(2) 27 bro.quit()