1. 什么是selenium和浏览器对象
selenium是一个自动化测试工具,支持多种浏览器,包括Chrome,Firefox,IE等,它可以模拟用户在浏览器上的操作,比如点击、输入、提交等等。浏览器对象指的是打开浏览器后所产生的一个窗口,我们可以在这个窗口里进行各种操作,所以在selenium中,我们需要先打开一个浏览器对象,然后再对这个对象进行各种操作。
2. 安装selenium库
在Python中使用selenium,首先需要安装selenium库,可以使用pip命令来安装:
pip install selenium
3. 打开浏览器对象
使用selenium操作浏览器对象,首先需要打开一个浏览器对象,常用的浏览器有Chrome和Firefox,下面以Chrome为例。
3.1 下载ChromeDriver
在使用Chrome时需要下载ChromeDriver,ChromeDriver可以让selenium与Chrome进行通信。
下载地址:http://npm.taobao.org/mirrors/chromedriver
选择与本地Chrome浏览器版本对应的版本进行下载,然后将其解压缩到指定目录中。
3.2 加载ChromeDriver
加载ChromeDriver需要使用webdriver模块中的Chrome方法,具体用法如下:
from selenium import webdriver
# 加载ChromeDriver
driver = webdriver.Chrome('/path/to/chromedriver')
其中,'/path/to/chromedriver'是你解压缩后ChromeDriver的路径,如下所示:
driver = webdriver.Chrome('/Users/username/Downloads/chromedriver')
运行上面的代码后,就会打开一个Chrome浏览器窗口。
4. 爬取网页内容
打开一个浏览器对象后,我们就可以对这个浏览器对象进行各种操作,比如输入网址、点击按钮等等。下面以爬取百度首页为例,讲解如何使用selenium爬取网页内容。
4.1 输入网址
使用selenium打开浏览器后,我们需要输入要访问的网址。可以使用driver对象的get方法来输入网址,如下所示:
# 输入网址
driver.get('https://www.baidu.com')
运行上面的代码后,会在浏览器中打开百度首页。
4.2 查找元素
想要爬取网页内容,我们需要找到要爬取的元素,可以使用driver对象的find_element_by_*方法来查找元素。
比如,如果我们想要获取百度搜索框的元素,代码如下:
# 找到搜索框元素
search_box = driver.find_element_by_id('kw')
其中,find_element_by_id是按id查找元素的方法,还有其他的查找方法,如下所示:
find_element_by_name:按名称查找元素
find_element_by_xpath:使用xpath查找元素
find_element_by_link_text:按链接文本查找元素
find_element_by_partial_link_text:按部分链接文本查找元素
find_element_by_tag_name:按标签名称查找元素
find_element_by_class_name:按类名查找元素
find_element_by_css_selector:使用CSS选择器查找元素
4.3 操作元素
找到要操作的元素后,我们就可以对这个元素进行各种操作,比如输入、点击等等。以百度搜索框为例,代码如下:
# 输入关键字
search_box.send_keys('Python')
# 提交搜索
search_box.submit()
其中,send_keys方法用于给元素输入内容,submit方法用来提交表单。以上代码运行后,会在浏览器中搜索Python关键字。
5. 关闭浏览器对象
使用完浏览器对象后,需要将其关闭以释放资源。可以使用close方法来关闭浏览器对象,如下所示:
# 关闭浏览器对象
driver.close()
6. 完整代码示例
下面是一个完整的使用selenium爬取百度搜索的代码示例:
from selenium import webdriver
# 加载ChromeDriver
driver = webdriver.Chrome('/path/to/chromedriver')
# 输入网址
driver.get('https://www.baidu.com')
# 找到搜索框元素
search_box = driver.find_element_by_id('kw')
# 输入关键字
search_box.send_keys('Python')
# 提交搜索
search_box.submit()
# 关闭浏览器对象
driver.close()
运行上面的代码后,会在Chrome浏览器中搜索Python关键字。