selenium+chromeDriver+PhantomJS的使用

selenium+chromeDriver+PhantomJS的使用

Selenium
是一个自动化测试工具,通过selenium 可以实现浏览器的点击,还有下拉等一系列操作,类似与按键精灵.

安装:
pip install selenium

在使用selenium 是需要浏览器的配合,所以我们还要安装浏览器的驱动,
chromeDriver 是谷歌浏览器的驱动 所以在使用此驱动时必须保证安装了谷歌浏览器

chromeDriver的安装:

下载地址:https://chromedriver.storage.googleapis.com/index.html
下载之前一定先确定当前你浏览器的版本,下载与之对应的驱动

版本对应表:
chromedriver版本 支持的Chrome版本
v2.43 v69-71
v2.42 v68-70
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

下载完成后,将ChromeDriver的可执行文件配置到环境变量下。
建议直接将chromedriver.exe文件拖到Python的Scripts目录下

测试安装是否成功:

from selenium import webDriver
browser = webDriver.Chome()
# 退出浏览器
browser.quit()

如果弹出后闪退,则可能是ChromeDriver版本和Chrome版本不兼容

除了谷歌 火狐浏览器也提供了驱动GeckoDriver

下载地址:https://github.com/mozilla/geckodriver/releases

配置方法和谷歌一样

解决隐藏窗口的办法:
在之前 使用selenium时最佳组合是PhantomJS(无界面浏览器),但是最新的selenium不在支持,所以现在使用Chome的无头浏览器,两者相比Chome无头浏览器会占据更多的内容,而且我们在使用时会一直出现一个浏览器窗口,但是我们可以通过配置将浏览器窗口进行隐藏:

from selenium import webdriver
from selenium.webdriver.chrome.options import  Options
chrome_options = Options()
#解决DevToolsActivePort文件不存在的报错
chrome_options.add_argument('--no-sandbox')
#指定浏览器分辨率
chrome_options.add_argument('window-size=1920x3000')
#谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--disable-gpu')
#隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('--hide-scrollbars')
#不加载图片, 提升速度
chrome_options.add_argument('blink-settings=imagesEnabled=false')
#浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
chrome_options.add_argument('--headless')
#手动指定使用的浏览器位置
chrome_options.binary_location=r'C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe'

#实例化浏览器
driver = webdriver.Chrome(chrome_options=chrome_options)


#设置请求头信息
from selenium import webdriver
#进入浏览器设置
options = webdriver.ChromeOptions()
#设置中文
options.add_argument('lang=zh_CN.UTF-8')
#更换头部
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
browser = webdriver.Chrome(chrome_options=options)
url = "https://www.baidu.com"
browser.get(url)
browser.quit()

PhantomJS的使用

虽然selenium最新版本已经不支持PhantomJS但是我们可以通过对selenium降级来去使用它,
将selenium写在安装3.8版本

PhantomJS安装地址:
http://phantomjs.org/download.html

selenium的使用:

from selenium import webdriver

#实例化浏览器
browser = webdriver.PhantomJS()

#访问网页
browser.get(‘http://www.baidu.com’)

#输入搜索内容
browser.find_element_by_id(‘kw’).send_keys(‘meinv’)
#单机搜索
browser.find_element_by_id(‘su’).click()

#输出代码
print(browser.page_source)

#截图
browser.save_screenshop('图片名字‘)

#退出浏览器
browser.quit()

#设置 请求头信息

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

headers = {
‘Accept-Language’: ‘zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3’,
‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4’,
‘Connection’: ‘keep-alive’
}

cap = DesiredCapabilities.PHANTOMJS.copy() #// 使用copy()防止修改原代码定义dict

for key, value in headers.items():
cap[‘phantomjs.page.customHeaders.{}’.format(
key)] = value

#初始化浏览器
browser = webdriver.PhantomJS(desired_capabilities=cap)
driver = webdriver.PhantomJS(desired_capabilities=dcap)
driver.get(“https://www.baidu.com”)
driver.get_screenshot_as_file(‘01.png’)
driver.quit()

你可能感兴趣的:(python,爬虫,selenium,chromeDriver,PhantomJS)