全部,
我對 Python 和 Selenium 還很陌生,所以希望你能原諒!我知道以前有人問過這個問題。我正在嘗試從此頁面抓取資料,但沒有成功。即使我的等待時間很長,我也會收到超時錯誤。這是我的謙虛代碼:
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver_path = '/usr/local/bin/chromedriver'
driver = webdriver.Chrome(executable_path=driver_path)
driver.header_overrides = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
url = "https://superrare.com/features/series-4"
response = driver.get(url)
html = driver.page_source
element = WebDriverWait(driver,50).until(EC.presence_of_element_located((By.CLASS_NAME, "FeaturedArtistName-sc-jssh89-2 iTyMhR")))
print(html)
driver.quit()
uj5u.com熱心網友回復:
這里有幾個問題:
- 您正在使用一個包含大量隨機化的類名。它可能會改變。所以我試圖通過只取類名的靜態部分來使它有點健壯。
- 類名有 13 個元素
FeaturedArtistName-sc-jssh89-2 iTyMhR(我假設您正在嘗試等待所有這些元素),但是您要求驅動程式等待presence_of_element應該是的presence_of_elements。所以,我稍微調整了你的代碼,很快我就得到了結果。
這是我調整的行: element = WebDriverWait(driver,50).until(EC.presence_of_all_elements_located((By.XPATH, "//*[contains(@class,'FeaturedArtistName')]")))
輸出(我沒有在這里顯示所有輸出以節省空間)
<html lang="en" class="js-focus-visible wf-roboto-n5-active wf-roboto-n3-active wf-roboto-n7-active wf-roboto-n4-active wf-materialicons-n4-active wf-active"><head><script type="text/javascript" async="" src="https://widget.intercom.io/widget/d3gh4rmg"></script><script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script id="twitter-wjs" src="https://platform.twitter.com/widgets.js"></script><script>!function(){var t=window,e=t.Intercom;if("function"==typeof e)e("reattach_activator"),e("update",t.intercomSettings);else{var
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406768.html
標籤:
