Scrapy のドキュメントに記載されているサンプル コードを使用して、Python スクリプトで Web サイトにログインしようとしています。変更されたコードは次のとおりです。
from scrapy.spider import BaseSpider
from scrapy.http import Request,FormRequest
class LoginSpider(BaseSpider):
name = 'loginspidername'
start_urls = ['http://example.com/index.php']
login_page='http://example.com/index.php'
def parse(self, response):
return [FormRequest.from_response(response,
formdata={'username': 'myname', 'Password': 'mypass'},
formxpath='//*[@id="loginblock"]/div/div/form',
callback=self.after_login)]
def after_login(self, response):
# check login succeed before going on
if "logout" in response.body:
print 'logged in'
else:
print 'not logged in'
return
また、必要に応じて HTML セクションを次に示します。
<div class="canvas" name="slideblock" id="loginblock" style="display: none;">
<div class="wrapper">
<div class="loginFloater">
<div align="right"><a href="javascript:hideDiv('loginblock');">close(X)</a></div>
<h2>Login</h2>
<form method="post" action="login.php">
<label>Username</label><input class="data" name="username" value="" placeholder="username" type="text"><br>
<label>Password</label><input class="data" name="password" value="" placeholder="password" type="password"><br>
<label></label><strong style="display:none ">Wrong Password Try again</strong>
<label> </label><input type="submit" class="searchButton" value="Login"></form>
<input type="checkbox" name="rememberme" value="true"> Remember Me<br><br>
<label> </label><a href="#">Forgot</a> Password?
Not a member? <a href="javascript:slideDiv('signupblock');">Signup</a>
<br>
</div>
</div>
</div>
出力は常に「ログインしていません」単純なコードに見えるかもしれませんが、単にログインしていません。コードで考えられる問題は考えられません。どんな種類の助けも大歓迎です。読んでくれてありがとう。