2016-11-04 3 views
0

ページのすべての内部Webリンクをクロールするためにscrapyを使用する必要があります。たとえば、www.stackovflow.com上のすべてのリンクがクロールされます。この作業コードソート:相対リンクを含む内部リンクのみをスキャンする

extractor = LinkExtractor(allow_domains=self.getBase(self.startDomain)) 

    for link in extractor.extract_links(response): 
     self.registerUrl(link.url) 

ただし、ベースドメインstackoverflow.comが含まれていないような/meta又は​​などのすべての相対パスがクロールされていない、小さな問題があります。任意のアイデアをどのようにこれを修正するには?

+1

scrapy.spidermiddlewares.offsite.OffsiteMiddleware https://doc.scrapy.org/en/latest/topics/spider-middleware.html#scrapy.spidermiddlewares.offsite.OffsiteMiddlewareこれを実行していませんか? –

+0

ありがとう、私は明らかにいくつかの古い文書を見つけました –

答えて

1

私が正しく質問を理解していれば、あなたがscrapy.spidermiddlewares.offsite.OffsiteMiddleware https://doc.scrapy.org/en/latest/topics/spider-middleware.html#scrapy.spidermiddlewares.offsite.OffsiteMiddleware

を使用するには、 クモによってカバーされたドメイン外のURLに対する要求をフィルタリングします。

This middleware filters out every request whose host names aren’t in the spider’s allowed_domains attribute. All subdomains of any 

ドメインも許可されています。例えば。ルールwww.example.org はbob.www.example.orgでは許可されますがwww2.example.comでは許可されず、 example.comでも許可されます。これと同様の

When your spider returns a request for a domain not belonging to those covered by the spider, this middleware will log a debug message 

DEBUG: Filtered offsite request to 'www.othersite.com': <GET http://www.othersite.com/some/page.html> 

To avoid filling the log with too much noise, it will only print one of these messages for each new domain filtered. So, for example, 

www.othersite.comための別の要求が濾過されている場合、ログメッセージ が印刷されません。しかし、someothersite.comのリクエストがフィルタリングされた場合は、 というメッセージが出力されます(最初のリクエストがフィルタリングされた場合のみ)。

If the spider doesn’t define an allowed_domains attribute, or the attribute is empty, the offsite middleware will allow all requests. 

If the request has the dont_filter attribute set, the offsite middleware will allow the request even if its domain is not listed in 

許可ドメイン。

私の理解は、フィルタリングされる前にURLが正規化されていることです。

+1

OffsiteMiddlewareはsettings.pyで無効にするべきですか? –

+0

ただそれが動作することを確信してください –

+0

いいえ 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware':500、https://doc.scrapy.org/en/latest/topics/settings.html?highlight=OffsiteMiddlewareを参照してください –

関連する問題