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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gerapy-Selenium 是一个基于 Gerapy 框架的插件,用于在爬虫中使用 Selenium 进行动态网页的爬取。下面是使用 Gerapy-Selenium 的步骤: 1. 安装 Gerapy-Selenium: ``` pip install gerapy-selenium ``` 2. 在 Gerapy 项目中创建一个爬虫(如果已有爬虫可跳过此步骤): ``` gerapy startproject myproject cd myproject gerapy crawl myspider ``` 3. 在 Gerapy 中配置 Selenium: 在 Gerapy 项目的 `settings.py` 文件中添加以下配置: ```python SELENIUM_DRIVER_NAME = 'chrome' # 使用的浏览器,支持 chrome、firefox、phantomjs SELENIUM_DRIVER_EXECUTABLE_PATH = '/path/to/driver' # 浏览器驱动的路径 SELENIUM_DRIVER_ARGUMENTS = ['--headless'] # 浏览器启动参数,可选 ``` 4. 在 Spider 中使用 Selenium: 在 Spider 的 `spiders/myspider.py` 文件中导入 `SeleniumRequest`: ```python from gerapy_selenium import SeleniumRequest ``` 然后可以在 Spider 中使用 `SeleniumRequest` 发送请求,例如: ```python def start_requests(self): yield SeleniumRequest(url='http://example.com', callback=self.parse) def parse(self, response): # 使用 response.meta['driver'] 来操作浏览器 driver = response.meta['driver'] # 使用 driver.find_element 等方法进行元素定位和操作 title = driver.find_element(By.XPATH, '//h1').text yield {'title': title} ``` 在上述例子中,`SeleniumRequest` 会自动创建一个浏览器实例,并将该实例传递给回调函数的 `response.meta['driver']` 中,可以通过该驱动对象进行元素定位和操作。 这样就可以在 Gerapy 中使用 Selenium 进行动态网页的爬取了。注意,使用 Gerapy-Selenium 时需要安装对应浏览器的驱动,例如 Chrome 需要下载 ChromeDriver,Firefox 需要下载 geckodriver,并将驱动的路径配置到 `SELENIUM_DRIVER_EXECUTABLE_PATH` 中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值