目录
10.1Selenium和PhantomJS和headless-chrome
10.2Selenium和PhantomJS与Chrome的配合使用
对于采用异步加载技术的网页,有时候通过逆向工程来构造爬虫是比较困难的。想用Python获取异步加载返回的数据,可以使用Selenium模块模拟浏览器。
10.1Selenium和PhantomJS和headless-chrome
10.1.1Selenium的概念和安装
Selenium是一个用于web应用程序测试的工具,它直接运行在浏览器中,就像真实的用户在操作一样。由于这个性质,Selenium也是一个强大的网络数据采集工具,它可以让浏览器自动加载页面,这样使用了异步加载技术的网页,也可获取其需要的数据。
Selenium模块是Python的第三方库,可以通过PIP安装:
pip install selenium
10.1.2浏览器的选择和安装
Selenium自己不带浏览器,需要配合第三方浏览器来使用。可以通过help命令查看Selenium的Webdriver功能及Webdriver支持的浏览器
from selenium import webdriver
help(webdriver)
其中,android和blackberry是移动端的浏览器,这里不做考虑。事实上,常用的浏览器是Firefox,Chrome和PhantomJS。我们这里要用的无界浏览器是chrome和PhantomJS。但是由于PhantomJS已经停更,所以只稍微涉猎,主要以chrome为主(原理其实大体相同罢了)
(1)打开百度网盘链接拿去。链接:https://pan.baidu.com/s/1Q7gOII6faiSBXNZfj8fSpQ
提取码:data 对应的chrome webdriver下载可以去这里http://chromedriver.storage.googleapis.com/index.html 更详细的资料可以查看Headless Chrome官方文档。
(2)点击下载,其实就是一个.exe应用程序,然后将PhantomJs或chrome放在python或anaconda目录之下。chrome得设置环境变量。
(3)在Pyhton环境中进行测试,如果没有报错说明可用。
from selenium import webdriver
driver = webdriver.PhantomJS()
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
#设置无界面模式
chrome_options.add_argument("--headless")
#禁用gpu
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.baidu.com/')
print('打开浏览器')
print(driver.title)
driver.find_element_by_id('kw').send_keys('测试')
print('关闭')
driver.quit()
print('测试完成')