暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python爬虫-28-基于python和Selenium,让你控制浏览器自动化操作

运维家 2022-06-09
2511

最实用的python和selenium的操作手册,分分钟掌握。

1、selenium打开浏览器

打开浏览器就是初始化一下,然后发起一个请求,他就会自动调用浏览器,并访问这个地址:

from selenium import webdriver

# 指定浏览器驱动的位置
Driver_path = r'C:\Users\22768\Desktop\python\chromedriver.exe'

# 初始化
driver = webdriver.Chrome(executable_path=Driver_path)

# 请求百度
driver.get('http://www.baidu.com')

2、selenium关闭某个标签页

当我们在一个浏览器中打开多个标签页的时候,想关闭一个,就要这么写了:

driver.close()

3、selenium关闭浏览器

当我们运行完我们的代码之后,肯定要关闭掉我们的浏览器,那么就可以在代码最后面写:

driver.quit()

4、selenium定位元素(位置)

这里有很多种定位元素的方法,比如根据XPATH
id
name
class
css
等方式,我觉得方式越多越乱,所谓一招鲜吃遍天嘛,我们掌握一种即可,我喜欢通过XPATH
来定位到具体的位置,为啥子呢,因为浏览器本身可以复制Xpath
,我们直接通过他就不用分析对应的网页了,直接开整了就:

Input_Button = driver.find_element(by=By.XPATH, value='具体Xpath')

5、selenium输入内容

所谓的输入内容,就是需要你先定位到某个位置,然后在这个位置里面放入一些值,你可以理解为你的鼠标移动到了输入框,然后输入了一些东西:

Input_Button.send_keys('运维家的博客')

6、selenium点击按钮

当你输入内容之后,是不是需要点击一下百度的按钮,或者按个回车,他才会进行搜索:

Down_button = driver.find_element(by=By.XPATH, value='//*[@id="su"]')
Down_button.click()

7、selenium获取返回的信息

当我们使用selenium
控制浏览器进行相关操作之后,如何获取页面返回的信息呢,通过下面的方式就可以了:

driver.page_source

8、小demo

通过上面的操作,我觉得我们可以来通过上面的内容来写个小demo
来实际操作下了。往下看:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 指定浏览器驱动的位置
Driver_path = r'C:\Users\22768\Desktop\python\chromedriver.exe'

# 初始化
driver = webdriver.Chrome(executable_path=Driver_path)

# 请求百度
driver.get('http://www.baidu.com')

# 获取信息
print(driver.page_source)

# 找到输入框
Input_Button = driver.find_element(by=By.XPATH, value='//*[@id="kw"]')

# 输入内容
Input_Button.send_keys('运维家的博客')

# 找到“百度一下”按钮的xpath路径
Down_button = driver.find_element(by=By.XPATH, value='//*[@id="su"]')

# 点击一下“百度一下”按钮
Down_button.click()

# 等待5s
time.sleep(5)

# 退出当前页面
driver.close()

可以看到浏览器从开始,到出现如下界面,然后关闭的整个过程;

是不是还挺神奇的,同时,我们的后台日志也输出了该页面的html
代码,如下图:

如果我们需要获取启动的数据,那么就可以使用etree
的方式,然后再结合一些正则或者xpath
语法来获取。

那么我们继续来看下python
selenium
其他的更多用法吧。

9、selenium控制浏览器最大化

selenium
运行的时候我们的浏览器默认打开是一个小框框,个人喜欢让其最大化,那么如何操作呢:

driver.maximize_window()

10、selenium清空输入

当我们在输入框或者别的地方输入错误的时候,如何清空呢:

Input_Button.clear()

11、selenium操作下拉列表

我们访问的页面如果出现一个下拉框,我们如何在他的下拉列表中选择我们的值呢;

这里我们需要引入一个新的方法,那就是select
,然后将下拉列表中的内容,当做参数传给一个对象,后面就可以进行选择了;

from selenium.webdriver.support.ui import Select
# 创建对象
SelectTag = Select(driver.find_element(by=By.XPATH, value='XPATH路径'))

# 根据索引选择
SelectTag.select_by_index()  # 从0开始,第一个下拉列表的内容是0,以此后退

# 根据值选择
SelectTag.select_by_value()  # value,查看源代码即可看到

# 根据文本选择
SelectTag.select_by_visible_text()  # 描述文本,界面即可看到

# 取消选择
SelectTag.deselect_all()


12、selenium按钮操作

日常用的按钮操作有什么,单击、双击、右击;

按钮单击,我们上面说了,就是使用click
就行了;

Down_button = driver.find_element(by=By.XPATH, value='//*[@id="su"]')
Down_button.click()

按钮双击的时候我们就需要引入其他方法了,如下;

from selenium.webdriver.common.action_chains import ActionChains
Down_button = driver.find_element(by=By.XPATH, value='//*[@id="su"]')
ActionChains(driver).double_click(Down_button).perform()

按钮右击,并指定菜单选项:

from selenium.webdriver.common.action_chains import ActionChains
ActionChains(driver).context_click().perform()  # 如果想右击某个地方,那么参考上面的方法即可

至此,本文结束,掌握本文的内容,对于一些网页的基本操作,已经不成问题了。 

长按以识别二维码关注运维家~
微信号:yunweijia0909


往期推荐

docker下载镜像加速

05-docker系列-使用dockerfile构建镜像

03-docker系列-docker容器的基本操作


文章转载自运维家,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论