python+selenium实现浏览器自动化操作

0、简介

Selenium 可以在没有人参与的情况下使用浏览器,并通过代码实现自动化流程,例如模拟用户输入、提交表单。

1、安装

  1. 首先安装selenium库
1
pip3 install selenium
  1. 查看浏览器版本

    image-20240716144724361

3.下载浏览器驱动文件

Chrome驱动下载地址:https://googlechromelabs.github.io/chrome-for-testing/

Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases

下载对应版本的驱动文件,把文件放到Python根目录。

image-20240716144545993

image-20240716144857117

2、演示代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 定义元素
input_location = (By.XPATH, '//*[@id="ww"]')
button_location = (By.XPATH, '//*[@id="s_btn_wr"]')
news_location = (By.XPATH, '//*[@id="1"]/div/h3/a')


# 初始化Chrome浏览器启动参数
chrome_options = webdriver.ChromeOptions()
# 隐身模式
chrome_options.add_argument("--incognito")
# 禁用浏览器的信息和日志记录
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"])

# 创建实例
browser = webdriver.Chrome(chrome_options)
# 打开网站
browser.get("https://news.baidu.com/")
# 最大化窗口
browser.maximize_window()
# 设置隐式等待时间
browser.implicitly_wait(5)

# “*”星号表示:将这个元组拆分成两个独立的元素[By.XPATH],[//*[@id="ww"]]
# 输入框输入文字
element = browser.find_element(*input_location).send_keys("熊猫")
# 百度一下
element = browser.find_element(*button_location).click()
# 获取一条新闻
text = browser.find_element(*news_location).text
print(text)
# 等待3秒
time.sleep(3)
# 关闭浏览器
browser.quit()

IMG_20240716150127

3、扩展

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"""
初始化 Chrome 浏览器。
"""
chrome_options = webdriver.ChromeOptions()
# 隐身模式
chrome_options.add_argument("--incognito")
# 无界面模式
# chrome_options.add_argument('--headless')
# 禁用缓存
chrome_options.add_argument("--disable-cach")
# 禁用插件
chrome_options.add_argument("--disable-plugins")
# 禁用通知
chrome_options.add_argument("--disable-notifications")
# 禁用组件更新
chrome_options.add_argument("--disable-component-update")
# 忽略证书错误
chrome_options.add_argument("--ignore-certificate-errors")
# 禁用浏览器默认的自动化扩展
chrome_options.add_experimental_option("useAutomationExtension", False)
# 禁用浏览器的信息和日志记录
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"])

# 创建实例
browser = webdriver.Chrome(chrome_options)
# 最大化窗口
browser.maximize_window()
# 设置隐式等待时间
browser.implicitly_wait(5)



"""
初始化 Firefox 浏览器。
"""
firefox_options = webdriver.FirefoxOptions()
# 隐私模式
# firefox_options.add_argument("--private")
# 禁用自动更新
firefox_options.set_preference("app.update.auto", False)
firefox_options.set_preference("app.update.enabled", False)
# 忽略证书错误
firefox_options.set_preference("browser.ssl_override_behavior", 1)
# 禁用浏览器通知
firefox_options.set_preference("dom.webnotifications.enabled", False)
# 禁用窗口日志
firefox_options.set_preference("browser.dom.window.dump.enabled", False)
# 禁用控制台日志
firefox_options.set_preference("browser.console.showInPanel", False)
# 禁用首次运行数据报告
firefox_options.set_preference("toolkit.telemetry.reportingpolicy.firstRun", False)
# 无界面模式
# firefox_options.headless = True

# 创建实例
browser = webdriver.Firefox(firefox_options)
# 最大化窗口
browser.maximize_window()
# 设置隐式等待时间
browser.implicitly_wait(5)