刮烂番茄12年奴隶电影

问题描述

我正在尝试从该页面获取收视率 https://www.rottentomatoes.com/m/12_years_a_slave(即 100,000+)使用 python selenium。 我尝试了各种硒定位器,但每次都出现 NoSuchElementException: 错误。 这是我的代码

import selenium
from selenium import webdriver

driver = webdriver.Chrome('path.exe')
url = 'https://www.rottentomatoes.com/m/12_years_a_slave'
driver.get(url)
    
def scrape_dom(element):
    shadow_root = driver.execute_script('return 
        arguments[0].shadowRoot',element)
    retuen shadow_root

host = driver.find_element_by_tag_name('score-board')
root_1 = scrape_dom(host)
views = root_1.find_element_by_link_text(
        '/m/12_years_a_slave/reviews?type=user&intcmp=rt-' + \
        'scorecard_audience-score-reviews')

我也试过 xpath,css_selector 但总是出错。你能告诉我我的代码有什么问题吗?

解决方法

一个简单的 CSS 选择器在这里工作。

from selenium import webdriver

driver = webdriver.Chrome()
url = 'https://www.rottentomatoes.com/m/12_years_a_slave'
driver.get(url)

print(driver.find_element_by_css_selector('a[slot=audience-count]').text)

我将 100,000+ Ratings 打印到我的控制台。

,

看看这个 xpath 是否有效:-

driver.find_element_by_xpath(".//a[@data-qa='audience-rating-count']").text
,

你不需要硒。您可以使用 requestsbs4。此外,您可以使用更快的 css 类选择器,而不是目前其他答案中给出的较慢的属性选择器。

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.rottentomatoes.com/m/12_years_a_slave')
soup = bs(r.content,'lxml')
soup.select_one('.scoreboard__link--audience').text