如何在页面上搜索内容并对其上的网址产生splashrequest?

时间:2016-06-18 17:14:17

标签: scrapy web-crawler scrapy-spider

我的问题与this one非常相似,但不完全相同。我正在尝试抓取网页A,其中包含我要废弃的商品以及指向网页B1,B2,B3的链接列表...每个B页面包含我要废弃的商品以及指向另一个页面的链接,C1,C2,C3。每个C页面还包含我要废弃的项目。

这是我的蜘蛛现在的样子:

class XiaomiSpider(CrawlSpider):
    name = 'xiaomi'
    allowed_domains = ['mi.com']
    start_urls = ['http://app.mi.com']

    ## parse A page
    def parse(self, response):
        le = LinkExtractor()
        for link in le.extract_links(response):
            yield SplashRequest(
                link.url, 
                callback = self.parse_2,
                endpoint='render.html',
                args={'wait':0.5}
                )

    ## parse B pages
    def parse_2(self, response):
        for sel in response.xpath('//ul[@class = "applist"]/li/h5/a'):
            item = XiaomiItem()
            # print (sel.xpath('text()').extract())
            item['name'] = sel.xpath('text()').extract()
            yield item

        le = LinkExtractor()
        for link in le.extract_links(response):
            yield SplashRequest(
                link.url, 
                self.parse_dir_contents,
                endpoint='render.html',
                args={'wait':0.5}
                )

    ## parse a page to save the item
    def parse_dir_contents(self, response):
        for sel in response.xpath('//ul[@class = "applist"]/li/h5/a'):
            item = XiaomiItem()
            # print (sel.xpath('text()').extract())
            item['name'] = sel.xpath('text()').extract()
            yield item

问题是抓取工具没有转到C页面。我想问题出在parse_2函数中,但不知道如何修复它。有谁能告诉我这是什么问题?

0 个答案:

没有答案