alf*_*kim 1 python forms scrapy
我正在使用scrapy来解析具有以下形式的网站:
<form id="form1"...>
<select name="codes" multiple="multiple"...>
<option value="0">Option one</option>
<option value="1">Option two</option>
<option value="2">Option three</option>
....
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
我正在填写并使用以下代码提交表单:
submit_form = FormRequest.from_response(response,
formxpath="//form[@id='form1']",
formdata={'codes': '0'},
callback=self.parse_table)
yield submit_form
Run Code Online (Sandbox Code Playgroud)
如何在表单数据中提交多个代码?我试过了:
formdata={'codes': '["0", "1", "2"]'},
formdata={'codes': ['0', '1', '2']},
Run Code Online (Sandbox Code Playgroud)
没有任何运气。
编辑:
表单有额外的输入控件,其中一些是隐藏的,它们在表单中正确传递。我在表单提交后看到的就像服务器返回到与表单相同的页面,当我期待一个新页面的表格实际上包含我想要检索的数据时。
我对服务器后端知之甚少,只知道它是用 .NET 2.0 构建的。这是一个非常古老的网站,来自政府的依赖。
谢谢。
要发送具有多个选项的表单,您应该尝试以以下格式传递表单数据
formdata = {}
formdata['codes[]'] = ["0","1","2","3"]
yield scrapy.FormRequest.from_response(
response=response,
formid='UserLoginForm',
formdata=formdata,
callback=self.search_result,
)
Run Code Online (Sandbox Code Playgroud)
验证代码值是否以所需格式提交,这是 request_body 的输出
codes%5B%5D=0&codes%5B%5D=1&codes%5B%5D=2&codes%5B%5D=3
Run Code Online (Sandbox Code Playgroud)
取消引用
codes[]=0&codes[]=1&codes[]=2&codes[]=3
Run Code Online (Sandbox Code Playgroud)
拆分 &
codes[]=0
codes[]=1
codes[]=2
codes[]=3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |