0

我正在尝试使用 python selenium 从该页面https://www.rottentomatoes.com/m/12_years_a_slave(超过 100,000)中获取收视率 。我尝试了各种硒定位器,但每次我得到 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 但总是错误。你能告诉我我的代码有什么问题吗?

4

3 回答 3

0

你不需要硒。您可以使用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
于 2021-06-16T22:09:36.693 回答
0

看看这个 xpath 是否有效:-

driver.find_element_by_xpath(".//a[@data-qa='audience-rating-count']").text
于 2021-06-16T20:54:37.723 回答
0

一个简单的 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打印到我的控制台上。

于 2021-06-16T20:05:26.953 回答