为什么LinkExtractor没有捕获AJAX请求后生成的链接?

时间:2016-08-04 20:54:50

标签: python scrapy

我正在抓取一个生成无限滚动数据的页面。 我使用的是CrawlSpider,rules的定义如下:

rules = (
    Rule(LinkExtractor(restrict_xpaths = ('//*some/xpaths')), callback = 'parse_first_itmes', follow = True),
    Rule(LinkExtractor(restrict_xpaths = ('//*some/other/xpaths')), callback = 'parse_second_itmes'),
)

parse_item函数中,我有Request发出AJAX次请求:

def parse_first_items(self, response):
    l = ItemLoader(item = AmazonCnCustomerItem(), response = response)

    l.add_xpath('field1', '//p[@class="field1")]/text()')
    l.add_xpath('field2', '//p[@class="field2")]/text()')

    r_url = l.get_xpath('//*/url/xpath/@href')

    r = Request(url = req_url,
                    headers = {"Referer": "the/same/page/url",
                        "X-Requested-With": "XMLHttpRequest"},
                    callback = self.parse_first_items)

    return r, l.load_item()

我很好地获得了所需的数据,但LinkExtractor中的Second Rule没有从urlsRequest生成的数据中捕获parse_first_itmes 1}}功能。

如何让LinkExtractor中的Second Rule提取这些链接并使用它们来解析parse_second_itmes函数?

0 个答案:

没有答案