scrapy无法提交表格
问题描述:
这是我要刮的网页: http://www.nalpdirectory.com/Page.cfm?PageID=34。我想模拟提交表单#resultDisplayOptionsForm与#customDisplayNum设置为全部,这将带给我一个网页与所有列出的项目。scrapy无法提交表格
这是我的代码片段:
def parse(self, response):
yield scrapy.FormRequest.from_response(
response,
formid='resultDisplayOptionsForm',
formdata={'displayNum': '100000'}, #I tried 10, 20, 30 etc. none works
dont_click=True,
#clickdata={'id': 'customizeDisplaySubmitBtn'},
callback=self.after_showAll
)
def after_showAll(self, response):
from scrapy.shell import inspect_response
inspect_response(response, self)
当我检查响应,它总是显示失败的页面。欢迎任何建议。谢谢!
答
这里的问题是,您错过了实际获取数据的POST
请求。
如果你仔细检查,形式的POST
请求URL是this site,而“响应”,你要的是this site,所以可以确认缺少的东西。
你缺少执行的第三请求进入决赛现场,scrapy代码,这将是这样的:
def parse(self, response):
yield FormRequest.from_response(
response,
formid='resultDisplayOptionsForm',
formdata={'displayNum': '100000000'}, # I tried 10, 20, 30 etc. none works
dont_click=True,
# clickdata={'id': 'customizeDisplaySubmitBtn'},
callback=self.after_showAll
)
def after_showAll(self, response):
yield FormRequest(
url='http://www.nalpdirectory.com/Page.cfm?PageID=34',
formdata={
'currPage': '1',
'checkedFormID': '',
},
callback=self.parse_real,
)
def parse_real(self, response):
from scrapy.shell import inspect_response
inspect_response(response, self)
+0
谢谢你eLRuLL!这是我在StackOverflow中的第一个问题,它得到了完美的回答。不胜感激! –
我第一次检查使用'dont_click'说法的人。 – eLRuLL
“失败的页面”是什么意思? – eLRuLL