В настоящее время я пытаюсь очистить страницы фильма IMDB и до сих пор могу очистить детали фильма.Однако, чтобы очистить отзывы пользователей, мне нужно перейти на отдельную страницу от самой страницы фильма, которая в настоящее время не уверена, верен ли мой подход к решению этой проблемы.
Я использую глобальную переменную (данные[]) для хранения различных полей (которые в конечном итоге будут выгружены в файл json для эластичного поиска), однако одна из моих функций, похоже, не вызывается, и я не уверен, что мне не хватает
Общая логика, о которой я думаю, заключается в следующем: 1. Захватить все ссылки в моем списке (parse_movie_list) 2. Для каждой ссылки зайдите внутрь и очистите детали этого отдельного фильма (parse_individual_movie) 3. После того, как закончите, перейдите к очисткеобзоры (parse_individual_movie_reviews) 4. Данные о доходности
def parse_movie_list(self, response):
links = response.css('span.lister-item-header a::attr(href)').extract()
for link in links:
yield response.follow(link, callback=self.parse_individual_movie)
def parse_individual_movie(self, response):
reviewlink = response.xpath("//div[contains(@id, 'quicklinksMainSection')]/a[3]/@href").extract()[0] or None
data['reviewlink'] = reviewlink
newlink = "https://www.imdb.com"+reviewlink
request = scrapy.Request(newlink,callback=self.parse_individual_movie_reviews)
yield data
def parse_individual_movie_reviews(self,response):
reviews = response.xpath('//div[contains(@id, "main")/section/div[2]/div[2]/div[1]/div[1]/div[1]/div[3]/div[1]/text()').extract() or None
data['reviewLA'] = [reviews.strip() for review in reviews] or None
yield reviews
В настоящее время моя проблема заключается в том, что parse_individual_movie_reviews не вызывается (так как окончательный JSON не отражает существование reviewLA), в идеалецель состоит в том, чтобы в reviewLA содержались удаленные отзывы пользователей из документа.
Любая помощьбудет оценена