で認証されたscrapyログインを実行しようとしていますInitSpider
。何らかの理由で、InitSpider
それでは常にログインに失敗します。私のコードは、以下の投稿の回答に似ています。
ログに表示される応答は次のとおりです。
2012-12-20 22:56:53-0500 [linked] DEBUG: Redirecting (302) to <GET https://example.com/> from <POST https://example.com/>
上記の投稿のコードを使用すると、同じ、、、init_request
およびlogin
関数がありcheck_login_response
ます。login
ログステートメントで関数に到達していることがわかりますが、関数に到達していないようcheck_login_response
です。
を使用してコードを再実装し、関数でを実行すると、問題なくログインできますBaseSpider
。これには理由がありますか?他にやるべきことはありますか?でログインするためのリダイレクトを取得するのはなぜですか?FormRequest
parse
InitSpider
[編集]
class DemoSpider(InitSpider):
name = 'linked'
login_page = # Login URL
start_urls = # All other urls
def init_request(self):
#"""This function is called before crawling starts."""
return Request(url=self.login_page, callback=self.login)
def login(self, response):
#"""Generate a login request."""
return FormRequest.from_response(response,
formdata={'username': 'username', 'password': 'password'},
callback=self.check_login_response)
def check_login_response(self, response):
#"""Check the response returned by a login request to see if we are successfully logged in."""
if "Sign Out" in response.body:
self.log("\n\n\nSuccessfully logged in. Let's start crawling!\n\n\n")
# Now the crawling can begin..
return self.initialized()
else:
self.log("\n\n\nFailed, Bad times :(\n\n\n")
# Something went wrong, we couldn't log in, so nothing happens.
def parse(self, response):
self.log('got to the parse function')
上記は私のスパイダーコードです。