Python 爬虫进阶篇——Selenium教程(一)

Python 爬虫进阶篇——Selenium教程(一)_第1张图片

在之前的推文中介绍了一些爬虫的一些方法,不过这些方法基本上都是基于静态页,然而现实中大部分的页面的都是动态渲染的。requests固然很强大,却无法执行javaScript。

一、Selenium简介

Selenium最初是一个自动化测试工具,Selenium可以驱动浏览器自动执行自定义好的逻辑代码,即通过代码完全模拟使用浏览器自动访问目标站点并操作,所以也可以用来爬虫。

二、安装

pip install selenium

既然需要使用浏览器模拟,那么自然还需要安装浏览器驱动:

  1. Google浏览器驱动

https://sites.google.com/a/chromium.org/chromedriver/downloads​sites.google.com/a/chromium.org/chromedriver/downloads

2. Edge浏览器

Microsoft Edge Driver​developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

Python 爬虫进阶篇——Selenium教程(一)_第2张图片

3. Firefox浏览器

https://github.com/mozilla/geckodriver/releases​github.com/mozilla/geckodriver/releases

4. Safari 浏览器

https://webkit.org/blog/6900/webdriver-support-in-safari-10/​webkit.org/blog/6900/webdriver-support-in-safari-10/

注意:需要把下载好的文件放到python安装路径的scripts目录中才会生效。

Python 爬虫进阶篇——Selenium教程(一)_第3张图片

否则,在执行webdriver.Firefox()时,就给一个

selenium.common.exceptions.WebDriverException的错误。

这里用到的是火狐浏览器的驱动,下面也将用此驱动来展开。

三、连接浏览器

执行下面的代码就会调起一个空白的浏览器窗口

from selenium import webdriver

driver=webdriver.Firefox()

结果如下:

Python 爬虫进阶篇——Selenium教程(一)_第4张图片

不过需要注意的是,不是安装了驱动了就可以随意打开浏览器的,只能使用系统中已经安装的浏览器。

其它浏览器的连接浏览器的方法:

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()

其中PhantomJS是一种无界面浏览器,大家可以自行了解一下;

四、牛刀小试

那么如何自动打开指定的网址呢?

在浏览器中加载指定网址,比如:百度

from selenium import webdriver

driver=webdriver.Firefox()
# 用get打开百度页面
driver.get("http://www.baidu.com")

这里使用drvier.get(url)来打开指定的网址。

结果如下:

Python 爬虫进阶篇——Selenium教程(一)_第5张图片

既然我们打开了百度,那么肯定会想让他自动搜索一下,如下:

from selenium import webdriver

driver=webdriver.Firefox()
# 用get打开百度页面
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys('python 知识学堂')

这里使用find_element_by_id的方法去定位搜索框的位置,然后用send_keys方法输入内容,模拟键盘输入。

至于为啥find_element_by_id中的值是”kw”,这个在之前的文档中有提过。

结果如下:

Python 爬虫进阶篇——Selenium教程(一)_第6张图片

从结果看出,貌似还差一步,需要按一下回车键,那么怎么办呢?如下:

from selenium import webdriver

driver=webdriver.Firefox()
# 用get打开百度页面
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys('python 知识学堂')
driver.find_element_by_id("su").click()

这里使用的是click()的方法点击指定的按钮。结果如下:

Python 爬虫进阶篇——Selenium教程(一)_第7张图片

其实到这里,是不是就算一个简简单单的自动化处理了。

大家可以自己运行一下试试。

上面一直用到find_element_by_id去查找元素,常用的元素定位方法如下:

find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()

注意:

1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。

2、find_element()通用方法,它需要传入两个参数:查找方式By和值。实际上,它就是

find_element_by_id()这种方法的通用函数版本,比如

find_element_by_id(id)就等价于

find_element(By.ID, id),二者得到的结果完全一致。

Selenium 还支持xpath语法,这个在之前的基础推文中有详细的介绍,大家可以去公众号中查找

五、总结

这次就简单的介绍一下Selenium框架,以及如何使用浏览器驱动建起浏览器连接,最后通过打开百度的网址,搜索指定的内容,来展示Selenium的强大。

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