#python #scrapy
#python #scrapy
Вопрос:
В настоящее время я пытаюсь очистить страницы фильмов IMDB и пока что мне удается очистить детали фильма. Однако, чтобы просмотреть отзывы пользователей, я должен перейти на отдельную страницу со страницы самого фильма, в которой я в настоящее время не уверен, правильный ли мой подход к работе с ней.
Я использую глобальную переменную (data[]) для хранения различных полей (которые в конечном итоге будут сброшены в файл json для elasticsearch), однако, похоже, что одна из моих функций не вызывается, и я не уверен, чего мне не хватает
Общая логика, о которой я думаю, заключается в следующем:
- Возьмите все ссылки из моего списка (parse_movie_list)
- Для каждой ссылки зайдите внутрь и очистите детали этого отдельного фильма (parse_individual_movie)
- После завершения перейдите к очистке обзоров (parse_individual_movie_reviews)
- Выдавать данные
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 содержал вырезанные отзывы пользователей из документа.
Комментарии:
1. Попробуйте использовать yield из
2. можете ли вы опубликовать свой полный код, чтобы мы могли проверить и внести в него изменения.