selenium相关配置

ChromeDriver驱动版本:https://googlechromelabs.github.io/chrome-for-testing/

# 创建一个配置对象
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.add_argument('--headless')

# 封禁图片提高访问速度
prefs = {"profile.managed_default_content_settings.images": 2}
options.add_experimental_option("prefs", prefs)
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_list
        except:
            print("节点还没有加载完成...")

posted @ 2024-09-10 17:36  愿风带走思绪  阅读(39)  评论(0)    收藏  举报