2012-10-25 8 views
7

私はrefererのURLを設定する必要があります、サイトを掻く前に、サイトは参照URLベースの認証を使用しているので、refererが有効でない場合はログインできません。どのようにrefererのURLを設定する

誰かがScrapyでこれを行う方法を教えてもらえますか?

答えて

11

、あなたはsettings.pyファイルにDEFAULT_REQUEST_HEADERSを変更することができます

例:

DEFAULT_REQUEST_HEADERS = { 'Referer': 'http://www.google.com'
}

3
リクエストヘッダ

だけで設定リファラーURL

class scrapy.http.Request(url[, method='GET', body, headers, ...

headers (dict) – the headers of this request. The dict values can be strings (for single valued headers) or lists (for multi-valued headers).

例:@warwarukが示すように、あなたは以下のクロールスパイダーのための私の例の精緻化され、正確に行う必要があります

return Request(url=your_url, headers={'Referer':'http://your_referer_url'})

6

from scrapy.contrib.spiders import CrawlSpider 
from scrapy.http import Request 

class MySpider(CrawlSpider): 
    name = "myspider" 
    allowed_domains = ["example.com"] 
    start_urls = [ 
     'http://example.com/foo' 
     'http://example.com/bar' 
     'http://example.com/baz' 
     ] 
    rules = [(...)] 

    def start_requests(self): 
    requests = [] 
    for item in start_urls: 
     requests.append(Request(url=item, headers={'Referer':'http://www.example.com/'})) 
    return requests  

    def parse_me(self, response): 
    (...) 

これは、次のログを生成する必要がありますあなたの端末:

(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/foo> (referer: http://www.example.com/) 
(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/bar> (referer: http://www.example.com/) 
(...) 
[myspider] DEBUG: Crawled (200) <GET http://example.com/baz> (referer: http://www.example.com/) 
(...) 

BaseSpiderと同じように動作します。 end_requestsメソッドは、CrawlSpiderが継承するBaseSpiderメソッドです。

Documentationは、クッキー、コールバック機能、リクエストの優先度など、ヘッダーとは別にRequestで設定できるオプションについて説明します。

関連する問題