我正在学习如何使用Scrapy登录html表单。这是一个登录蜘蛛的代码示例,与Scrapy的教程稍作修改:
类LoginSpider(BaseSpider): name =' example.com' start_urls = [' http://www.example.com/users/login.php']
def parse(self, response):
return [FormRequest.from_response(response,
formdata={'username': 'wrongusername', 'password': 'wrongpassword'},
callback=self.after_login)]
def after_login(self, response):
# check login succeed before going on
if "Invalid" in response.body:
self.log("Login failed", level=log.ERROR)
return
else:
print "Not forwarding to failed login page"
# continue scraping with authenticated session...
我故意提供不正确的登录信息,以便搜索字符串"无效"。但是,控制台不会从日志中打印错误消息。 "用户名和#34;和#34;密码"对于表单中的输入字段是正确的名称,这应该不是问题。此外,"无效"输入错误的登录信息时,它会显示为字符串,因此不应该是问题。此外,似乎输入了错误的登录信息时,会显示错误消息,但它与原始登录页面具有相同的URL。如果网站没有将我转发到另一个页面,这会是一个问题吗?似乎scrapy正在搜索原始登录页面(当没有输入信息时),这就是为什么它找不到"无效"。
提前感谢您的帮助!