# 创建一个配置对象
options = webdriver.ChromeOptions()# 代理设置
options.add_argument('--proxy-server=http://221.131.165.71:27208')# 携带本地用户信息启动,注意:在使用的时候要将运行的谷歌浏览器全部关闭
# --user-data-dir 携带的谷歌的本地信息,默认路径
options.add_argument("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/")# 去除网站的一些自动化检测
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_experimental_option('excludeSwitches', ['enable-automation'])# 就是这一行告诉chrome去掉了webdriver痕迹,令navigator.webdriver=false,极其关键
options.add_argument("--disable-blink-features=AutomationControlled")# 修改为无界面模式
# 把chrome设置成无头模式,不论windows还是linux都可以,自动适配对应参数
options.set_headless()# 封禁图片提高访问速度
prefs = {"profile.managed_default_content_settings.images": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument('--headless')
options.add_argument('--disable-gpu')# 实例化带有配置的driver对象
driver = webdriver.Chrome(options=options)# 正常的使用selenium.....# 优化等待页面
# selenium等待的三种方式:强制等待 隐式等待 显式等待driver.implicitly_wait(10) # 隐式等待
driver.get("https://www.baidu.com")# 自己动手写显式等待
def find_element_by_xpath(xpath):n = 0# 等待优化while n < 30:try:time.sleep(0.5)goods_list = driver.find_elements_by_xpath(xpath)if len(goods_list) < 需要的数据量,如果不到这个数据量就继续访问,如果到就返回数据:print("继续加载...")return goods_listexcept:print("节点还没有加载完成...")