我正在抓取一个生成无限滚动数据的页面。
我使用的是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
没有从urls
中Request
生成的数据中捕获parse_first_itmes
1}}功能。
如何让LinkExtractor
中的Second Rule
提取这些链接并使用它们来解析parse_second_itmes
函数?