一. 应用领域
在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛。
二. 无头浏览器介绍
通常大家在打开网页的工具就是浏览器,通过界面上输入网址就可以访问相应的站点内容,这个就是通常所说的基于界面的浏览器。除了这种浏览器之外,还有一种叫做无头浏览器,主要是用作爬虫,用以捕捉
Web
上的各类数据;这里的无头主要是指没有界面,完全是后台操作。它就是一个真实的浏览器。只是这个浏览器是无界面的。也称为无界面浏览器
。
三. selenium之谷歌
1. chromedriver.exe下载地址
https://npm.taobao.org/mirrors/chromedriver
2. 谷歌无头浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='Z:chromedriver_win32chromedriver.exe')
driver.get("http://httpbin.org/ip")
print(driver.page_source)
driver.quit()
3. 谷歌无头浏览器加IP代理
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--proxy-server=http://代理服务器地址:代理服务器端口号")
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='Z:chromedriver_win32chromedriver.exe')
driver.get("http://httpbin.org/ip")
print(driver.page_source)
driver.quit()
四. selenium之火狐
1. geckodriver.exe下载地址
https://github.com/mozilla/geckodriver/releases
2. 火狐无头浏览器
from selenium import webdriver
profile = webdriver.FirefoxOptions()
profile.add_argument('-headless') # 设置无头模式
browser = webdriver.Firefox(options=profile, executable_path='Z:geckodriver-v0.29.0-win64geckodriver.exe')
browser.get('http://httpbin.org/ip')
print(browser.page_source)
browser.quit()
3. 火狐无头浏览器加代理
from selenium import webdriver
profile = webdriver.FirefoxOptions()
profile.add_argument('-headless')
# 设置代理服务器
profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.http', 代理服务器IP地址[字符串类型])
profile.set_preference('network.proxy.http_port', 代理服务器端口号[整数类型])
browser = webdriver.Firefox(options=profile, executable_path='Z:geckodriver-v0.29.0-win64geckodriver.exe')
browser.get('http://httpbin.org/ip')
print(browser.page_source)
browser.quit()
五. 扩展小知识
其实还有一个是
PhantomJS
可以设置无头浏览器。但是这个目前停止更新了,所以我就不过多地介绍它了。真正掌握上面的两种主流的用在开发方面的浏览器就已经差不多了。
六. 扩展
1. 不关闭浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_experimental_option("detach", True) # 不关闭浏览器
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='Z:chromedriver_win32chromedriver.exe')
driver.maximize_window()
driver.get("http://www.baidu.com")
print(driver.page_source)