擅长:python、mysql、java
<p>在提交有效的POST request页面后,您的页面有点怪异,并且很难解析,页面的响应带有302个http状态和一堆cookies(顺便说一下,您的formdata是无效的,您需要用参数中的美元替换下划线)。在</p>
<p>将GET发送到<a href="https://a836-propertyportal.nyc.gov/ExemptionDetails.aspx" rel="nofollow">https://a836-propertyportal.nyc.gov/ExemptionDetails.aspx</a>后可以查看内容</p>
<p>最令人惊讶的是,你可以爬行这个网站只使用cookies,而不需要POST请求。POST只是为了给你cookies,它不重定向或用html响应。你可以操纵蜘蛛的饼干。你只需要让第一个GET-to-GET会话cookie,然后用borough、block等连续获取</p>
<p>试试这个破壳:</p>
<pre><code>pawel@stackoverflow:~/stack/scrapy$ scrapy shell "https://a836-propertyportal.nyc.gov/Default.aspx"
In [1]: from scrapy.http import Request
In [2]: req = Request("https://a836-propertyportal.nyc.gov/ExemptionDetails.aspx", cookies = {"borough":"1", "block":"01000", "style":"default", "lot":"0011"})
In [3]: fetch(req)
In [4]: view(response)
Out[5]: True # opening browser window
</code></pre>
<p>此时的响应将包含给定区块、行政区和地块的属性数据。现在你只需要在你的蜘蛛身上运用这些知识。只要用cookies替换您的POST,添加回调到shell中的内容,它就可以正常工作了。在</p>
<p>如果这仍然不起作用,或者不适合您的目的,请尝试提取隐藏的ajax参数(nullctl00_ScriptManager1_HiddenField的值),将其添加到formdata中(当然还要更正formdata,使其与浏览器发送的内容相同)。在</p>