私はrefererのURLを設定する必要があります、サイトを掻く前に、サイトは参照URLベースの認証を使用しているので、refererが有効でない場合はログインできません。どのようにrefererのURLを設定する
誰かがScrapyでこれを行う方法を教えてもらえますか?
私はrefererのURLを設定する必要があります、サイトを掻く前に、サイトは参照URLベースの認証を使用しているので、refererが有効でない場合はログインできません。どのようにrefererのURLを設定する
誰かがScrapyでこれを行う方法を教えてもらえますか?
、あなたはsettings.pyファイルにDEFAULT_REQUEST_HEADERSを変更することができます
例:
DEFAULT_REQUEST_HEADERS = { 'Referer': 'http://www.google.com'
}
BaseSpider.start_requests
を上書きし、カスタムRequestを作成してreferer
ヘッダーを渡します。あなたはクモのリクエストにリファラを変更したい場合は
だけで設定リファラー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'})
:
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で設定できるオプションについて説明します。