from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import random
import time
用来待时间操作
def wait(n):
time.sleep(random.randint(1, n))
实例化参数对象
options = webdriver.ChromeOptions()
加入参数, 使用options.add_argument()
常用参数
options.add_argument("--headless") # 无头, 也就是没有界面。
options.add_argument("--start-maximized") # 打开时页面最大化
保留用户数据存储的路径,有些需要保存登陆信息, 可以使用命令行启动chrome,输入用户信息保存,再运行自动化。
import os
exe_path = r'"C:\Program Files\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9015 --user-data-dir=E:\wx_wifi\chrome-userdata'
os.system(exe_path)
options.add_argument(r"--user-data-dir=F:\chrome_data")
有些网站会使用反爬技术识别,是不是webdriver自动化的, 可以使用先人工手动打开chrome, 再通过端口运行,这样可以逃避识别。 参考上述exe_path的命令打开。
options.add_experimental_option("debuggerAddress", "127.0.0.1:9015")
它允许用户在Chrome浏览器中启动浏览器时排除特定的Chrome命令行开关,enable-automation 是一个Chrome命令行开关,用于启用Chrome浏览器的自动化功能。禁用它可以帮助防止被一些自动化检测工具检测到。
options.add_experimental_option('excludeSwitches', ['enable-automation'])
实例化chrome驱动对象, 指定驱动的位置与参数
driver = webdriver.Chrome(r'./chromedriver-122.exe', options=options)
设置implicitly_wait,implicitly_wait 的超时时间是从 WebDriver实例化后就开始计算的,直到找到元素或超时为止。如果在超时时间内元素仍然没有加载完成,WebDriver 会抛出一个异常。 只对find_element, find_elements方法的调用。
driver.implicitly_wait(60*3)
打开网页
driver.get('https://baidu.com')