簡體   English   中英

Selenium 無法在緩慢加載頁面上找到特定元素

[英]Selenium not able to find particular elements on slow loading page

我正在嘗試抓取網站籃球參考,但遇到了一個我似乎無法解決的問題。 我正在嘗試為每個玩過的游戲獲取盒子得分元素。 這是我可以用 urlopen 輕松完成的事情,但是 b/c 網站的其他部分需要 Selenium 我想我會用 Selenium 重寫整個過程

問題似乎是,即使我等到使用 WebDriverWait 看到第一個元素加載時才開始抓取,當我繼續抓取元素時,我什么也得不到。

我發現有趣的一件事是,如果我使用來自 urlopen 的結果與 print (uClient.read()) 之類的東西進行完整的站點打印,與使用 print (驅動程序.page_source)。 即使我將 ImplicitlyWait 設置為 5 分鍾。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC



driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.wait = WebDriverWait(driver, 10)
driver.get('https://www.basketball-reference.com/boxscores/')
driver.wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="content"]/div[3]/div[1]')))


box = driver.find_elements_by_class_name('game_summary expanded nohover')

print (box)

driver.quit()

試試下面的代碼,它在我的電腦上工作。 如果您仍然遇到問題,請告訴我。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.wait = WebDriverWait(driver, 60)
driver.get('https://www.basketball-reference.com/boxscores/')
driver.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="content"]/div[3]/div[1]')))

boxes = driver.wait.until(
    EC.presence_of_all_elements_located((By.XPATH, "//div[@class=\"game_summary expanded nohover\"]")))

print("Number of Elements Located : ", len(boxes))

for box in boxes:
    print(box.text)
    print("-----------")

driver.quit()

如果它解決了您的問題,請將其標記為答案。 謝謝

實際上,該站點根本不需要 selenium。 所有數據都通過一個簡單的請求(它只是在 html 的評論中,只需要解析它)。 其次,您可以使用 pandas 輕松獲取得分

import pandas as pd

dfs = pd.read_html('https://www.basketball-reference.com/boxscores/')

for idx, table in enumerate(dfs[:-2]):
    print (table)
    if (idx+1)%3 == 0:
        print("-----------")

暫無
暫無

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

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