我正試圖從爛番茄中刮取觀眾分數。我能夠獲得評論,但不確定如何使用 selenium 獲得“audiencescore”
資源:
<score-board
audiencestate="upright"
audiencescore="96"
class="scoreboard"
rating="R"
skeleton="panel"
tomatometerstate="certified-fresh"
tomatometerscore="92"
data-qa="score-panel"
>
<h1 slot="title" class="scoreboard__title" data-qa="score-panel-movie-title">Pulp Fiction</h1>
<p slot="info" class="scoreboard__info">1994, Crime/Drama, 2h 33m</p>
<a slot="critics-count" href="/m/pulp_fiction/reviews?intcmp=rt-scorecard_tomatometer-reviews" class="scoreboard__link scoreboard__link--tomatometer" data-qa="tomatometer-review-count">110 Reviews</a>
<a slot="audience-count" href="/m/pulp_fiction/reviews?type=user&intcmp=rt-scorecard_audience-score-reviews" class="scoreboard__link scoreboard__link--audience" data-qa="audience-rating-count">250,000 Ratings</a>
<div slot="sponsorship" id="tomatometer_sponsorship_ad"></div>
</score-board>
代碼:
from selenium import webdriver
driver = webdriver.Firefox()
url = 'https://www.rottentomatoes.com/m/pulp_fiction'
driver.get(url)
print(driver.find_element_by_css_selector('a[slot=audience-count]').text)
uj5u.com熱心網友回復:
其屬性值audiencescore不是任何文本節點值,這就是我們不能呼叫.text方法來獲取該值的原因。所以你必須get_attribute()在選擇正確的定位器后打電話。以下運算式有效。
print(driver.find_element(By.CSS_SELECTOR,'#topSection score-board').get_attribute('audiencescore'))
#進口
from selenium.webdriver.common.by import By
uj5u.com熱心網友回復:
嘗試這個:
1- 獲取元素記分牌
2- 從元素中獲取 Audiencescore 屬性
audiencescore = driver.find_element_by_css_selector('score-board').get_attribute('audiencescore')
uj5u.com熱心網友回復:
你離得夠近了。要提取audiencescore屬性的值,即理想情況下的文本96,您需要為visibility_of_element_located()引入WebDriverWait,您可以使用以下任一定位器策略:
使用CSS_SELECTOR:
driver.get("https://www.rottentomatoes.com/m/pulp_fiction") print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "score-board.scoreboard"))).get_attribute("audiencescore"))使用XPATH:
driver.get("https://www.rottentomatoes.com/m/pulp_fiction") print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//score-board[@class='scoreboard']"))).get_attribute("audiencescore"))注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC控制臺輸出:
96
您可以在如何使用 Selenium - Python 檢索 WebElement 的文本中找到相關討論
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489827.html
