В настоящее время я пытаюсь почерпнуть информацию об отзывах пользователей из imdb, включая звездный рейтинг, который дает пользователь, название обзора и сам текст обзора.Тем не менее, у меня, кажется, есть проблема, когда в обзоре не дается звездный рейтинг.Кажется, мой код переопределяет рейтинги звезд и предполагает, что с того момента, как рейтинг не присваивается, дальнейшие оценки на этой странице не выдаются.Когда отсутствует рейтинг, я просто хочу, чтобы появилась фраза «без ввода».
Вот мой код:
import lxml
from lxml import html
import requests
headers= {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"}
page = requests.get('https://www.imdb.com/title/tt0108052/reviews?ref_=tt_ql_3', headers=headers)
tree = html.fromstring(page.content)
x=tree.xpath('//div[@class="lister-item-content"]')
for index in range(len(x)):
Title='###Title:',(tree.xpath('//a[@class="title"]')[index]).text_content()
Author='###Author:',(tree.xpath('//span[@class="display-name-link"]')[index]).text_content()
Text='###Text:', (tree.xpath('//div[@class="text show-more__control"]')[index]).text_content()
if (tree.xpath('.//div[@class="ipl-ratings-bar"]')[index]) in (tree.xpath('.//div[@class="lister-item-content"]')[index]):
Stars=(tree.xpath('//div[@class="ipl-ratings-bar"]/span[1]/span[1]')[index]).text_content()
else:
Stars=('no input')
if index <5:
print([('###Index:', index), Stars, Title])
И это текущий вывод, который я получаю:
[('###Index:', 0), '10', ('###Title:', ' Bring me the head of Hitler n Himmler.\n')]
[('###Index:', 1), 'no input', ('###Title:', ' The most shattering film of all time.\n')]
[('###Index:', 2), 'no input', ('###Title:', " Excellent - Spielberg's Best\n")]
[('###Index:', 3), 'no input', ('###Title:', ' Vehement\n')]
[('###Index:', 4), 'no input', ('###Title:', " don't take this personally\n")]
Индексы 0 и 1 в настоящее время имеют «10» и «нет ввода».Однако индексы 3, 4 и 5 должны иметь соответственно звездные рейтинги «9», «10» и «7».Почему звездные рейтинги перезаписываются «без ввода» после первого случая отсутствия звездной оценки, даже если это неверно?