我正在尝试模拟登录网站以抓取一些数据。以下是我从浏览器中获取的表单的来源:
*form method="POST"action="/account/login/"id="login_form"class="submit_form" div style='display:none'>/div>input type="hidden"name="next"value="/"*
在 scrapy 中,我按照文档中的建议执行以下操作。
def parse(self, response):
return [FormRequest.from_response(response,
formdata={'username': self.uname,
'password': self.key},
callback= self.afterlogin)]
def afterlogin(self, response):
#check login succeed before going on
if "authentication failed" in response.body:
self.log("Login failed", level=log.ERROR)
else:
return Request(url="http://example.com",
callback=self.parse_Page)
但是,我似乎没有登录,我在日志中没有收到任何错误。我不确定我是否遗漏了表单数据中的某些内容?它确实从日志中显示我正在被重定向:
调试:重定向 (301) 其次是 调试:已抓取 (404)
任何指针将不胜感激。
最佳答案
事实证明,为登录表单添加带有 xpath 的 formxpath 参数解决了这个问题。
关于python - 通过scrapy模拟表单登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024177/