selenium简单食用

导入

1
2
3
from selenium import webdriver  # 导入引擎方法
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service # 解决版本更新,方法过时后报错

学会的方法–持续更新

设置渲染规则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
op = webdriver.ChromeOptions()
# op.add_argument("--headless") 添加规则--无头模式(不显示浏览器窗口)
op.headless = True # 后面发现无头模式,这种写法也行
driver_path = Service(r'浏览器引擎的绝对路径') # 导入浏览器引擎
driver = webdriver.Chrome(service = driver_path, options = op)

driver.get("") # 链接地址

driver.implicitly_wait(10) # 隐式等待10秒
# 隐式等待,程序会一直等待整个页面加载完成,才会执行下一步操作,在等待时间内页面没有加载完成,时间一到也会进入下一步操作

vc = driver.find_element(By.XPATH, "//*[@class='']") # "XPATH路径表达式"

# xpath路径表达式 https://juejin.cn/post/7135261141558788127#heading-5

vi = driver.find_element(By.ID, 'id name')

vpic = vi.screenshot('保存路径') # 对指定元素截图,挺好用的



过网站自动化检测

没看明白,不过再设置渲染规则时加上这几句就可以过网站selenium检测,没有正在接受自动化测试的字了

1
2
3
4
5
6
7
8
9
10
11
op .add_experimental_option('excludeSwitch', ['enable-automation'])
op .add_experimental_option('useAutomationExtension', False)

driver .execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.implicitly_wait(10) # 添加隐式等待 优点:未查询到不会抛异常,每隔半秒查一次,成功就继续运行

参考资料

selenium超全教程(老版):https://zhuanlan.zhihu.com/p/343948620
                    https://zhuanlan.zhihu.com/p/521545291
去报错教程:https://blog.csdn.net/JBY2020/article/details/121909071
            https://blog.csdn.net/m0_62298204/article/details/120802053
xpath路径表达式 https://juejin.cn/post/7135261141558788127#heading-5