Python爬虫之selenium自动化模块操作

selenium最初是一款自动化测试工具,在爬虫里面我们可以使用它解决requests请求不到的数据(Ajax请求),使用selenium模块能便捷的获取网站中动态加载的数据,和实现模拟登录,并且可以支持多种浏览器

一、下载selenium模块

使用终端程序下载:pip install selenium

二、下载浏览器驱动

想要实现浏览器的自动化操作,首先需要下载相关浏览器的驱动程序,这里我们以谷歌浏览器为例:

第一步、查看谷歌浏览器的版本号

Python爬虫之selenium自动化模块操作_第1张图片

 Python爬虫之selenium自动化模块操作_第2张图片

 第二步、找到谷歌浏览器的驱动程序

http://chromedriver.storage.googleapis.com/index.html
 

找到与我们浏览器版本最相近的版本下载

Python爬虫之selenium自动化模块操作_第3张图片

 选择我们的操作系统进行下载,win32也同时支持win64

 Python爬虫之selenium自动化模块操作_第4张图片

第三步、 解压到指定路径

下载完成后我们将压缩包解压到我们使用的python中的Scripts文件夹里,

F:\python\venv37\Scripts

另一个就是放到我们谷歌浏览器的文件夹里

Python爬虫之selenium自动化模块操作_第5张图片

 第四步、添加环境变量

Python爬虫之selenium自动化模块操作_第6张图片

 前面我们已经将驱动程序放到了Chrome所在的文件夹,我们将路径添加到环境变量即可。

三、selenium模块的基本用法

我们首先要导入selenium里的webdriver包,然后创建一个浏览器对象,使用get()方法打开网页地址,然后就可以模拟我们用户在浏览器的操作了

假如我们想打开百度,搜索“python”这个词,并将搜索结果的页面标题打印出来,代码如下

from selenium import webdriver
from time import sleep
# 创建浏览器对象,并打开网页
bro = webdriver.Chrome(executable_path = 'F:\\python\\venv37\\Scripts\\chromedriver.exe')
bro.get('https:www.baidu.com')
# 查找搜索框元素并输入文本
input_box = bro.find_element_by_id('kw')

input_box.send_keys('Python')

# 查找搜索按钮元素并点击
search_button = bro.find_element_by_id('su')
search_button.click()

# 提取当前请求地址
print(bro.current_url)
#停留五秒
sleep(5)
# 关闭浏览器
bro.close()

Selenium库中的find系列的方法用于查找网页中的元素,常用的方法有以下几种:

1. find_element_by_id(id):根据元素的id属性查找元素,并返回第一个匹配的元素。
2. find_element_by_name(name):根据元素的name属性查找元素,并返回第一个匹配的元素。
3. find_element_by_xpath(xpath):根据元素的xpath路径查找元素,并返回第一个匹配的元素。
4. find_element_by_link_text(link_text):根据链接文本查找超链接元素,并返回第一个匹配的元素。
5. find_element_by_partial_link_text(partial_link_text):根据部分链接文本查找超链接元素,并返回第一个匹配的元素。
6. find_element_by_tag_name(tag_name):根据元素的标签名查找元素,并返回第一个匹配的元素。
7. find_element_by_class_name(class_name):根据元素的class属性查找元素,并返回第一个匹配的元素。
8. find_element_by_css_selector(css_selector):根据元素的CSS选择器查找元素,并返回第一个匹配的元素。

这些方法的返回值是一个WebElement对象,表示网页中的一个元素。如果找不到对应的元素,这些方法会抛出NoSuchElementException异常。如果要查找多个元素,可以使用对应的"find_elements_* "方法,返回一个元素列表。

send_keys(): 这是用于模拟用户在输入框中输入文本。里面的内容可以是文本也可以是列表;它还可以模拟键盘按键,例如input_box.send_keys(Keys.ENTER)这将模仿按下键盘中的回车键。

bro.quit()bro.close()两个相同,都是用来关闭浏览器,如果不关闭浏览器的话,会占用我们的内存

还有几个常见的配置方法

#将浏览器最大化显示
bro.maximize_window()
# 通过js新打开一个窗口
bro.execute_script('window.open("https://www.baidu.com");')
# 浏览器页面回退
bro.back()
# 浏览器页面前进
bro.forward()
# 切换标签页
browser.switch_to_window(browser.window_handles[1])  #切换到浏览器中第二个窗口的句柄所对应的窗口

你可能感兴趣的:(selenium,自动化,测试工具,python)