小能豆

Selenium Python Chrome: Extremely slow. Are cookies the problem?

py

我读到,如果使用隐式等待、无头、ID 和 CSS 选择器等,Selenium Chrome 可以运行得更快。在实施这些更改之前,我想知道 cookie 或缓存是否会减慢我的速度。

Selenium 是否像普通浏览器一样存储 cookie 和缓存,或者每次导航到网站上的新页面时都会重新加载所有资源?

如果是,那么这将减慢抓取具有数百万个相同配置文件页面的网站的过程,其中每个配置文件的脚本和图像都是相似的。

是的,有办法避免这个问题吗?有兴趣在会话期间使用 cookie 和缓存,然后在浏览器关闭后销毁。

编辑,更多详细信息:

sel_options = {'proxy': {'https': pString}}
prefs = {'download.default_directory' : dFolder}
options.add_experimental_option('prefs', prefs)
blocker = os.path.join( os.getcwd(), "extension_iijehicfndmapfeoplkdpinnaicikehn")
options.add_argument(f"--load-extension={blocker}")
wS = "--window-size="+s1+","+s2
options.add_argument(wS)
if headless == "yes": options.add_argument("--headless");
driver = uc.Chrome(seleniumwire_options=sel_options, options=options, use_subprocess=True, version_main=109)
stealth(driver, languages=["en-US", "en"], vendor="Google Inc.", platform="Win32",  webgl_vendor="Intel Inc.", renderer="Intel Iris OpenGL Engine", fix_hairline=True)
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": agent})
navigate("https://linkedin.com")

我不认为我的代理或扩展是罪魁祸首,因为我有一个类似的自动化应用程序运行,没有速度问题。


阅读 180

收藏
2023-07-10

共1个答案

小能豆

Selenium WebDriver 在默认情况下会模拟浏览器行为,包括存储和处理 cookie 和缓存。这意味着在每次导航到新页面时,Selenium 会加载页面的所有资源,并处理和存储相关的 cookie。

这在某些情况下可能会导致性能下降,特别是在需要抓取大量相似页面的情况下。每次都重新加载资源和处理 cookie 可能会消耗时间和带宽。

然而,您可以通过配置 Selenium WebDriver 来优化这一点,以便在会话期间使用 cookie 和缓存,而不是在每次导航时重新加载。下面是一些方法:

  1. 启用缓存:您可以通过设置 Chrome 选项来启用浏览器缓存。例如,在您的选项对象中,添加以下参数之一:

options.add_argument("--disk-cache-dir=/path/to/cache")

这将指定一个文件夹,用于存储浏览器缓存。通过这种方式,浏览器将会在会话期间使用缓存,而不是每次重新加载资源。

  1. 管理 cookie:您可以使用 Selenium 的 cookie 相关方法来管理 cookie。例如,您可以在会话开始时添加一组 cookie,然后在后续导航中使用这些 cookie。

```
# 添加 cookie
driver.add_cookie({“name”: “cookie_name”, “value”: “cookie_value”})

# 获取 cookie
cookies = driver.get_cookies()

# 删除所有 cookie
driver.delete_all_cookies()
```

通过手动管理 cookie,您可以控制在会话期间使用哪些 cookie,以及何时添加、更新或删除它们。

请注意,代理和扩展也可能会对性能产生影响,尤其是如果它们会干扰或拦截网络请求。确保您的代理和扩展的配置是正确的,并且它们不会导致性能下降。

在您的代码示例中,您正在使用 Selenium Wire 和 Chrome 选项进行一些自定义配置。确保您对这些配置的了解,并确认它们不会对性能产生负面影响。

最后,尝试对您的代码进行优化和性能测试。可以尝试使用不同的配置和选项,以及使用浏览器开发者工具进行分析,以确定可能导致性能下降的因素,并采取相应的措施来优化您的自动化应用程序。

2023-07-10