Получил пустой список с красивым Soup и Селеном

#python #selenium #web-scraping #beautifulsoup #screen-scraping

#python #selenium #очистка веб-страниц #beautifulsoup #очистка экрана

Вопрос:

https://www.rottentomatoes.com/m/the_lord_of_the_rings_the_return_of_the_king

Я хочу получить TOMATOMETER и ОЦЕНКУ АУДИТОРИИ с этого веб-сайта, но получил пустой список.

 soup = BeautifulSoup(html, 'html.parser')
notices = soup.select('#tomato_meter_link > span.mop-ratings-wrap__percentage')
  

Комментарии:

1. Вы имеете в виду 93% и 86% ?

2. Или Reviews Counted: 272, User Ratings: 34,679,279 ?

Ответ №1:

Вы можете использовать последний дочерний селектор для типа span с родительским классом. Для этого используется BeautifulSoup 4.7.1

 import requests
from bs4 import BeautifulSoup

res = requests.get('https://www.rottentomatoes.com/m/the_lord_of_the_rings_the_return_of_the_king')
soup = bs(res.content, 'lxml')
ratings = [item.text.strip() for item in soup.select('h1.mop-ratings-wrap__score span:last-child')]
print(ratings)
  

Ответ №2:

Ваш код работает хорошо

 >>> from bs4 import BeautifulSoup
>>> html = requests.get('https://www.rottentomatoes.com/m/the_lord_of_the_rings_the_return_of_the_king').text
>>> soup = BeautifulSoup(html, 'html.parser')
>>> notices = soup.select('#tomato_meter_link > span.mop-ratings-wrap__percentage')
>>> notices
[<span class="mop-ratings-wrap__percentage">93%</span>]
  

Как вы получили html переменную?