在網頁抓取場景中,經常需要在網頁上定位元素動態地。為了克服 BeautifulSoup 在處理動態內容方面的局限性,可以整合 Selenium,以便在抓取之前等待元素透過 JavaScript 載入。
考慮以下 Python 程式碼:
element = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
在此這行程式碼的目的是為元素識別指定一個類別名稱。但是,由於 By.class 參數中存在多個類別名,可能會發生錯誤。 Selenium 不支援透過 By.class 傳遞多個類別名稱。
要解決這個問題,請考慮以下建議:
CSS_SELECTOR:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
XPATH:
element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
XPATH:
XPATH:XPATH:XPATH:XPATH:XPATH:以上是如何使用 Selenium 和 Python 高效定位具有多個類別名稱的 Web 元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!