簡體   English   中英

如何在硒中更快地從動態網站讀取數據

[英]How to read data from dynamic website faster in selenium

我有一些動態網站(足球現場投注)。 我沒有在 selenium 中閱讀所有 API。 我有無限循環,每次都在尋找元素。

while True:
    elements = self.driver.find_elements_by_xpath(games_path)
    for e in elements:
        match = Match()
        match.betting_opened = len(e.find_elements_by_class_name('no_betting_odds')) == 0

問題是它比我需要的慢一百倍。

有什么替代方法? 任何其他庫或如何使用 Selenium 加快速度?

我正在抓取的網站之一https://www.betcris.pl/zaklady-live#/Soccer

你的代碼有一個while True循環而不break 那是無限循環的實現。 從一個簡短的片段中,我無法判斷這是否是您的“無限循環”問題的根本原因,但可能是這樣,請檢查您的while循環中是否有任何break語句。

至於您問題的另一部分:我不確定您如何衡量無限循環的性能,但是有一種方法可以加快使用 selenium 解析頁面的速度:不使用 selenium。 從頁面中獲取快照並將其用於評估狀態、值和內容。

import lxml.html

page_snapshot = lxml.html.document_fromstring(self.driver.page_source)
games = page_snapshot.xpath(games_path)

這種方法比通過 selenium api 查詢快大約 2 個數量級。 抓取頁面一次,快速解析它,如果需要,稍后再抓取頁面。 如果你只想閱讀東西,你根本不需要 webelements,只需要數據樹。 要與元素交互,您當然需要使用 selenium 的 webelement,但要獲取值和狀態,快照可能就足夠了。

或者你只能用硒做什么:將'no_betting_odds'添加到games_path xpath。 在我看來,您想獲取那些沒有'no_betting_odds'類的元素。 然后只需將'.//*[not contains(@class, "no_betting_odds")]'games_path (您沒有共享,所以我無法更新)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM