解析当前页面时如何正确调用另一个函数?

时间:2019-03-24 10:26:47

标签: python scrapy

当前,我正在尝试抓取IMDB电影页面,到目前为止,我已经能够抓取电影详细信息。但是,要抓取用户评论,我必须移至与电影页面本身不同的页面,目前我不确定我的处理方法是否正确。

我正在使用全局变量(data [])存储不同的字段(这些字段最终将被转储到json文件中以供Elasticsearch使用),但是,似乎没有调用我的函数之一,并且我没有确定我缺少什么

我正在考虑的一般逻辑如下: 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包含从文档中删除的用户评论。

任何帮助将不胜感激

0 个答案:

没有答案