Python爬虫中selenium的学习与应用

187 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

Selenium是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些JavaScript动态渲染的页面来说,此种抓取方式非常有效。

Selenium可以轻松部署在Windows,Linux,Solaris和Macintosh等平台上。此外,它支持IOS(IOS,Windows Mobile和Android)等移动应用程序的OS(操作系统)。

Selenium通过使用特定于每种语言的驱动程序支持各种编程语言。Selenium支持的语言包括C#,Java,Perl,PHP,Python和Ruby。目前,Selenium Web驱动程序最受Python和C#欢迎。 Selenium测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代Web浏览器中运行。 Selenium支持的浏览器包括Internet Explorer,Mozilla Firefox,Google Chrome和Safari。

1. selenium chrome浏览器驱动的安装

chrome浏览器驱动下载网址

chromedriver.storage.googleapis.com/index.html

image.png

找到自己的浏览器对应的版本然后进行下载,下载结果为压缩包,将压缩包进行解压.

image.png

  • 方法一:

最后把解压后的exe文件放到Python的安装目录下就可以了

如果不记得自己的Python安装目录

import sys

print (sys.executable)

可以查看自己的Python安装目录
  • 方法二:

我们可以手动创建一个存放浏览器驱动的文件夹,如:D:\Chrome driver

将下载的浏览器驱动放到该文件夹下,然后再将D:\Chrome driver目录添加到高级系统设置-环境变量-系统变量-path中

image.png

2. selenium控制chrome,Firefox等浏览器

  1. 首先将我们需要的selenium的包导入 from selenium.webdriver import Chrome(如果使用chrome浏览器就导入chrome,如果使用别的浏览器则将名称换掉即可)

  2. 创建浏览器对象 web = Chrome()

  3. 打开浏览器 web.get("www.baidu.com")(此处以百度举例)

  4. 找到某个元素. 点击它 el = web.find_element_by_xpath('此处是xpath的地址')(xpath不了解的可以看我之前的博客) el.click() # 点击事件

  5. 查找某些元素时,我们需要掌握前后端的一些知识,我们可以通过element,class_name,id,tag_name等,主要视情况而定

image.png

  1. 当执行点击事件时,我们需要导入Keys from selenium.webdriver.common.keys import Keys

  2. 浏览器窗口之间的切换 web.switch_to.window(web.window_handles[-1])

    表示的是网页栏最后一个网页

    web.switch_to.window(web.window_handles[0])

    表示的是网页栏第一个网页

以下讲的是当网页中存在iframe的网页内嵌的时候:

我们先找到iframe的网址然后进行切换

web.get("")

# 处理iframe的话. 必须先拿到iframe. 然后切换视角到iframe . 再然后才可以拿数据

iframe = web.find_element_by_xpath('iframe的地址')

web.switch_to.frame(iframe)  # 切换到iframe

web.switch_to.default_content()  # 切换回原页面

无头浏览器的应用

# 准备好参数配置
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disable-gpu")

web = Chrome(options=opt)  # 把参数配置设置到浏览器中