2016-04-15 12 views
1

私は、壊れたEXTERNALリンクを探しているドメイン全体をクロールする必要があるスクレイパーを構築しています。私は、次のしている外部404を見つけるには

:私はこのコードを実行すると

class domainget(CrawlSpider): 
    name = 'getdomains' 
    allowed_domains = ['start.co.uk'] 
    start_urls = ['http://www.start.co.uk'] 

    rules = (
     Rule(LinkExtractor('/'), callback='parse_item', follow=True), 
    ) 

    def parse_item(self, response): 
     for link in LinkExtractor(allow=(), deny = self.allowed_domains).extract_links(response): 
      resp = scrapy.Request(link.url, callback=self.parse_ext) 


    def parse_ext(self, response): 
     self.logger.info('>>>>>>>>>> Reading: %s', response.url) 

を、それは私がHTTPステータスコードを取得し、これに基づいてさらに処理をしたいと思っparse_ext()関数に達することはありません。

parse_item()funcのページで抽出されたリンクをループしているときに、私はコールバックとしてparse_ext()を使用しています。

私は間違っていますか?

答えて

0

あなたは、コールバックからRequestのインスタンスを返すされていません。

def parse_item(self, response): 
    for link in LinkExtractor(allow=(), deny = self.allowed_domains).extract_links(response): 
     yield scrapy.Request(link.url, callback=self.parse_ext) 

def parse_ext(self, response): 
    self.logger.info('>>>>>>>>>> Reading: %s', response.url) 
+0

ビンゴを!また、dont_filter = TrueをRequestオブジェクトに追加する必要がありました。 yield scrapy.Request(link.url、callback = self.parse_ext、dont_filter = True) –

関連する問題