在 scrapy 中渲染 JS 内容的 FormRequest shell

FormRequest that renders JS content in scrapy shell

我正在尝试使用以下表单数据从此 page 中抓取内容:

我需要将 County: 设置为乔治王子的 DateOfFilingFrom 并将 01-01-2000 设置为 01-01-2000 所以我执行以下操作:

% scrapy shell
In [1]: from scrapy.http import FormRequest                                                                                                                                          

In [2]: request = FormRequest(url='https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx', formdata={'DateOfFilingFrom': '01-01-2000', 'County:': "Prince George's"})                             

In [3]: response                                                                                                                                                                     

In [4]:    

但它不起作用(响应是 None)另外,下一页看起来像下面动态加载的,我需要知道如何能够访问下面显示的每个链接检查后(据我所知,这可能是使用 Splash 完成的,但是,我不确定如何在 FormRequest 中组合 SplashRequest 并在 scrapy shell 用于测试目的。我需要知道我做错了什么以及如何呈现下一页(由下面显示的 FormRequest 产生的页面)

您发送的请求缺少几个字段,这可能是您没有收到回复的原因。您填写的字段也不符合他们在请求中期望的字段。处理此问题的一个好方法是使用 scrapy 的 from_response (doc),它可以根据表单中的信息为您填充一些字段。

对于这个网站,以下内容对我有用(使用 scrapy shell):

>>> url = "https://registers.maryland.gov/RowNetWeb/Estates/frmEstateSearch2.aspx"
>>> fetch(url)
>>> from scrapy import FormRequest
>>> req = FormRequest.from_response(
...             response,
...             formxpath="//form[@id='form1']", # specify the form on the current page
...             formdata={
...               'cboCountyId': '16',  # the county you select is converted to a number
...               'DateOfFilingFrom': '01-01-2001',
...               'cboPartyType': 'Decedent',
...               'cmdSearch': 'Search'
...             },
...             clickdata={'type': 'submit'},
...       )
>>> fetch(req)