【发布时间】:2020-12-13 05:59:15
【问题描述】:
我正在从这个website 中抓取内容我首先发送一个FormRequest,它会根据Wim Herman's 对我的另一个问题here 的回答产生搜索结果
我抓取了需要的内容并想移动到不包含 url 的下一页,它是由 JS 触发的。下面是 html 标签的样子:
<a href="javascript:__doPostBack('dgSearchResults$ctl24$ctl01','')">2</a>
我尝试了以下方法,但似乎没有任何效果:
In [18]: fr = FormRequest.from_response(response, formdata={"__EVENTTARGET": 'dg
...: SearchResults$ctl02$ctl03'})
In [19]: fetch(fr)
2020-08-24 16:47:06 [scrapy.core.engine] DEBUG: Crawled (200) <POST https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx> (referer: None)
In [20]: view(response)
Out[20]: True
还有这个:
In [21]: fr = FormRequest.from_response(response, formdata={"__EVENTTARGET": 'dg
...: SearchResults$ctl02$ctl01'}, clickdata={'type': 'submit'})
In [22]: fetch(fr)
2020-08-24 16:50:24 [scrapy.core.engine] DEBUG: Crawled (200) <POST https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx> (referer: None)
In [23]: view(response)
Out[23]: True
当我查看响应时,它要么让我进入初始页面(包含初始表单的页面),要么什么也没发生,页码仍设置为 1。
【问题讨论】:
-
这在 ASP 网页中很常见。
from_response非常适合处理这些问题,但有时它会跳过必填字段,或者包含不应出现在请求正文中的字段。在生成之前尝试检查您的request.body,并将其与浏览器在更改页面时发出的 POST 请求的正文进行比较。如果相同,您可能还需要重新生成标题。 -
你能详细说明吗?
-
当然,到时会写一个正确的答案。
标签: javascript asp.net scrapy dom-events