我正在尝试从一个印度政府的网络垃圾数据。首先我需要提交一个表格来获取数据。
在上面的图片中,您可以看到表单的屏幕截图。该表单允许您选择印度的州、州内的地区、地区内的区块和区块内的panchayats。上图中,安达曼和尼科巴是一个州,尼科巴是一个区,坎贝尔湾是一个街区,戈文德纳加尔是一个班查雅特。在
我需要收集所有班查亚特的资料。提交表单时发送的表单数据包含已选择的所有panchayat复选框的值。有超过250000个班查亚特人,几乎不可能手工完成。因此,我使用beauthoulsoup来解析表单的html元素,以获得所有panchayat的复选框的值。但是当页面被加载时,关于panchayat级别的信息不会被加载。当每个块展开时,页面在http://nregarep2.nic.in/netnrega/dynamic2/DynamicReport_new4.aspx/getGPs执行ajax post。它获取关于panchayat的信息,然后将其呈现到页面上。在
现在,我试图模拟ajax post来获取关于panchayats的信息,但是我得到了一个错误。下图显示了网络活动。
我的代码:
import requests
s = requests.session()
request_headers = {
'Host': 'nregarep2.nic.in',
'Connection': 'keep-alive',
'Content-Length': '46',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Origin': 'http://nregarep2.nic.in',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
'Content-Type': 'application/json; charset=UTF-8',
'Referer': 'http://nregarep2.nic.in/netnrega/dynamic2/dynamicreport_new4.aspx',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.9'
}
payload = {'state_code':'01', 'block_code':'0102003', 'year':'2013'}
getGPs = s.post('http://nregarep2.nic.in/netnrega/dynamic2/DynamicReport_new4.aspx/getGPs', data=payload, headers = request_headers)
print(getGPs.text)
我得到:
^{pr2}$我已经用不同的项目组合更改了请求头中的请求头,但没有运气。在
您需要在现有脚本中稍作修改才能获得响应。请尝试},如下所示:
data=json.dumps(payload)
而不是{结果如下:
^{pr2}$相关问题 更多 >
编程相关推荐