使用python请求库选择并提交表单

时间:2018-10-14 03:53:25

标签: python python-requests mechanize

我正在尝试从this网站上抓取数据。要访问表,我需要单击“搜索”按钮。我能够使用机械化成功完成此操作:

br = mechanize.Browser()
br.open(url + 'Wildnew_Online_Status_New.aspx')
br.select_form(name='aspnetForm')
page = br.submit(id='ctl00_ContentPlaceHolder1_Button1')

“页面”根据需要为我提供了带有表格的结果网页。但是,我想遍历底部的后续页面的链接,这将触发javascript。我听说机械化不支持此功能,所以我需要一种新的策略。

我相信我可以使用请求库中的发布请求访问后续页面。但是,我无法单击主页上的“搜索”以进入初始表。换句话说,我想使用请求来复制上面的代码。我尝试过

s = requests.Session()
form_data = {'name': 'aspnetForm', 'id': 'ctl00_ContentPlaceHolder1_Button1'}
r = s.post('http://forestsclearance.nic.in/Wildnew_Online_Status_New.aspx', data=form_data)

不确定原因,但这会再次返回主页(无需单击“搜索”)。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

我认为您应该研究scrapy

答案 1 :(得分:0)

您在发布请求中忘记了一些参数: https://www.pastiebin.com/5bc6562304e3c enter image description here 使用Google开发工具检查发布请求