一、如何实现无可视化界面?

先看能跳出浏览器的程序

 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()