如何使用scrapy通过接受对话框?

时间:2014-09-11 22:38:39

标签: scrapy

我需要抓一个我需要首先接受的接受对话框的网站。表格如下:

< 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!

1 个答案:

答案 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,这表明我确实正在处理会话 - 这使我找到了问题的根源。我希望。