Selenium自动化爬虫教程:安装、元素定位与表单提交实战

前言

随着互联网技术和各种智能终端的普及 ,我们正从信息时代步入数据时代,数据呈爆发式增长。现在比较流行的网络服务,如淘宝、京东、微博、股市等,无时无刻不产生数以万计的数据。这些数据,包含了大量的信息,而网络爬虫可以获取这些数据。只有获取这些数据,才能进行后续的数据分析和建模预测。


1、安装 Selenium 库

使用命令 pip install selenium 进行安装
在这里插入图片描述
出现 Successfully installed selenium,即成功安装 selenium
在这里插入图片描述
如果出现报错,检查是否缺失相关内容,对应安装完成后可以继续安装。
检查 Pycharm 中 Selenium 安装的版本
在这里插入图片描述

2、浏览器驱动的安装与配置

Selenium 只是操控网页的工具,因此还需要浏览器工具才能帮忙打开网页,这就一定要先安装浏览器的驱动程序。浏览器驱动是和浏览器对应的,不同的浏览器需要选择不同的浏览器驱动。如果使用的是谷歌浏览器,需要对应的 chromedriver,如果使用的是火狐浏览器,需要对应的火狐驱动。本节以谷歌浏览器(Chrome)为例,浏览器版本不同,对应的驱动版本也不相同,因此需单击设置中的关“于 Chrome”查看谷歌的版本信息
在这里插入图片描述
可以从 Chromedriver 官网,镜像地址“httpAddr-030”,下载安装 Chromedriver,根据版本号下载对应安装包
在这里插入图片描述
如果版本号为 89.0,对应驱动也应下载 89.0,注意区分操作系统,下载后将驱动器放在虚拟环境中 python.exe 同一个文件夹或者设置绝对路径参数
在这里插入图片描述

3、验证安装

下面验证 Selenium 是否能操控网页。启动谷歌浏览器打开百度网站的首页,打开后设置 5s 后关闭。
【示例】利用谷歌浏览器的打开百度网站的首页。

from selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(5)
driver.quit()

如果 Selenium 安装成功即能看到图所示界面
在这里插入图片描述

4、Selenium 中 webdriver 元素定位方式:

在这里插入图片描述
【示例】Selenium 中 webdriver 元素定位方式。

rom selenium import webdriver
import time
driver=webdriver.Chrome()
driver.get("httpAddr-017")
# 通过 id 定位
driver.find_element_by_id("s-usersetting-top").click() # 单击"设置"按钮
time.sleep(5# 通过元素 name 定位
driver.find_element_by_name("wd").send_keys("python1+X") # 在搜索框中输入"
python1+X "
time.sleep(5# 通过元素 class_name 定位
driver.find_element_by_class_name("s-top-login-btn").click() # 点击"登录" 按钮
time.sleep(5# 通过元素 tag_name 定位
driver.find_elements_by_tag_name('p')[0].click()
# 定位标签为<p>的元素,并单击
time.sleep(5# 通过链接文本定位
# 通过元素的 link 文本定位元素,单击"使用百度前必读"
driver.find_element_by_link_text("使用百度前必读").click()
# 通过元素的部分 link 文本定位元素,单击"使用百度前必读"
driver.find_element_by_partial_link_text("百度前必读").click()
time.sleep(5# 退出驱动器
driver.quit()

鼠标操作
在这里插入图片描述
在这里插入图片描述
【示例】模拟单击鼠标

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains # 引入
ActionChains 类
driver = webdriver.Chrome()
driver.get("httpAddr-017")
# 定位到要右击的元素
right_click = driver.find_element_by_name("tj_briicon")
# 对定位到的元素执行鼠标右键操作
ActionChains(driver).context_click(right_click).perform()

模拟单机鼠标的运行结果如图所示:
在这里插入图片描述

键盘操作:
在这里插入图片描述

【示例】通过下面的代码块,可以实现打开浏览器,然后打开百度页面,然后自己搜索 python1+X

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("httpAddr-017")
putkeys = driver.find_element_by_id('kw') # 获取输入框的 id
putkeys.send_keys("python1+X") # 输入需要百度的值,给输入框发送消息
time.sleep(4)
driver.quit()

键盘操作的运行结果如图所示
在这里插入图片描述
提交表单
在有表单的的界面上,可以不通过单击按钮进行提交操作,这就需要用到 submit()方法。但是这样的代码需要在一个表单(Form)中,并且 type(类型)需要是 submit,代码可以写为:driver.find_element_by_id(“form1”).submit()。即查找到表单(From)直接调用 submit,也可以使用 submit.click()。现在通过 Form 撰写的前端网页界面需要填写的较少,很多登陆界面更是通过用户扫码或者 QQ、微信等直接验证登陆,因此 submit 提交表单也就用的越来越少了。
【示例】通过下面的代码块,可以实现自动填写电子表单并提交。

from selenium import webdriver
from time import sleep
# 打开 chrome 浏览器
driver = webdriver.Chrome()
# 打开网页
driver.get("httpAddr-024")
sleep(1# 通过 class_name 查找元素
elem_radio = driver.find_elements_by_class_name("radio_box")
# 单击第一个选项,第四个选项
elem_radio[0].click()
elem_radio[3].click()
# 通过 class_name 查找元素
elem_check = driver.find_elements_by_class_name("check_box")
# 选中第 1、2、4 选项
elem_check[0].click()
elem_check[1].click()
elem_check[3].click()
# 查找下拉框按钮单击,单击第二个元素“应该不会留”
elem_wrapper = driver.find_elements_by_class_name("w-selection-wrapper")
elem_wrapper[0].click()
# 找到所有的选择选项,单击第二个元素“应该不会留”
option_cell = driver.find_elements_by_class_name("w-selection-option")
option_cell[2].click()
# 通过 id 查找元素,比 class 更准确,id 也在源码中
textarea = driver.find_element_by_id("5def9d9d92beb5764c5b2ef4")
# send_keys 可以发送内容和操作
textarea.send_keys("晴空万里")
# 通过 calss_name 查找元素
score = driver.find_elements_by_class_name("div_float");
# 打四颗星
score[3].click()
# 通过 id 查找元素,输入名字、年龄、号码
name = driver.find_element_by_id("option_5def9dd23631f2371655e788")
name.send_keys("常小信")
age = driver.find_element_by_id("option_5def9dd23631f2371655e789")
age.send_keys("19 岁")
link = driver.find_element_by_id("option_5def9dd23631f2371655e78a")
link.send_keys("213000")
# 通过 id 查找元素
submit = driver.find_element_by_id("next_button")
sleep(8)
# 单击此元素,提交表单
submit.click()

运行表单提交代码,运行结果如图所示。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值