我需要抓一个我需要首先接受的接受对话框的网站。表格如下:
< form action =“/ lst_sale /”method =“post”> < input class =“button”type =“submit”value =“Accept”/> < /形式>
单击“接受”按钮将我带到包含我需要解析的表的页面。现在我有:
# function to parse markup
def parse(self, response):
yield FormRequest(url="http://www.somedomain.com/lst_sale",
method="POST",
formdata={},
callback=self.parse_list)
def parse_list(self, response):
# do something...
问题是parse_list永远不会被调用所以我假设表单帖子没有发生。关于如何让它发挥作用的任何想法?
THX!
答案 0 :(得分:2)
找到答案。事实证明我没有发送正确的值。现在使用:
def parse(self, response):
yield FormRequest.from_response(
response,
formdata={"value":"Accept"},
callback=self.after_accept)
def after_accept(self, response):
yield Request("http://example.com?some_vars=some_values", callback=self.parse_list)
def parse_list(self, response):
#begin scraping!
这为我处理ASP.NET_SessionId。我在settings.py中设置了COOKIES_DEBUG = True,这表明我确实正在处理会话 - 这使我找到了问题的根源。我希望。