【问题标题】:Is it possible to get selenium work faster? [duplicate]是否有可能让硒更快地工作? [复制]
【发布时间】:2023-03-18 12:26:01
【问题描述】:

我在 Python 中使用 selenium 来抓取网页的文本,包括那些依赖于 javascript 的文本,但它使用 firefox 或其他浏览器打开一个窗口并且处理速度非常慢,例如每页 30 秒。 我可以以某种方式加速它吗?

代码示例是:

    gecko_path = r'X:\Programming\geckodriver\geckodriver.exe'

binary = r'C:\Program Files\Mozilla Firefox\firefox.exe'
options = Options()
options.binary = binary

xml_id ="JobDescription"
xml_class ="details-content"

driver = webdriver.Firefox(firefox_options=options, executable_path = gecko_path)

# get web page
driver.get(url)

text = bytes(driver.find_element_by_class_name(xml_class).text.encode('utf-8'))

print(type(text))

【问题讨论】:

  • 您是否检查过您在 chrome 中使用 --head-less 时所用的时间是否相同?
  • dkn mozilla 非常缓慢 headless ,并且使用 binary_chrome = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' options = Options() options.binary = binary_chrome options.headless = True driver = webdriver.Chrome(chrome_options=options, executable_path = gecko_path)driver.get(url) Chrome 不获取 url,请问有什么问题?
  • options = ChromeOptions(); options.add_argument("--headless"); driver = webdriver.Chrome( executable_path=binarypath"), chrome_options=options)
  • 试试看。它是 ChromeOptions()。
  • HTMLUnit 要快得多,尽管对 javascript 的支持不是很好。 (但越来越好)

标签: python-3.x rest selenium


【解决方案1】:

我不认为你可以有效地加速 Selenium 测试,因为它们启动了一个真正的浏览器,因此你应该得到或多或少相同的时间,就像你使用普通浏览器打开页面一样。

您可以考虑为网页抓取而设计的无头工具,例如 Scrapybeautifulsoup - 这样您应该能够更快地从页面中获取有趣的文本。

另一种选择是使用 Selenium Gridrun your Selenium tests in parallel 启动多个浏览器实例,这将允许您通过可以在硬件上启动的浏览器数量按比例减少执行时间

猜你喜欢
  • 1970-01-01
  • 2021-01-20
  • 2021-09-23
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 2010-09-10
  • 2020-07-01
  • 1970-01-01
相关资源
最近更新 更多