我已经设法用Selenium抓取documentation但是由于速度慢,我想用POST请求提取数据,但我甚至不确定是否可能。
我正在尝试使用默认搜索参数并命名为'Amit Kumar'。我以为我用以下代码实现了这个目标:
start_url = "http://bombayhighcourt.nic.in/party_query.php"
raw_data = "m_hc=01&m_side=C&pageno=1&m_party=Amit+Kumar&petres=P&myr=2017&submit1=Submit"
json={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}
requests.post(start_url, json=json, data=raw_data).text
然而,我得到的只是一个没有数据的空模板。我也尝试将原始数据作为字典传递,但还没有任何成功。对于那种类型的项目,我真的需要硒吗?
答案 0 :(得分:2)
您需要将标题(如User-Agent
)设置为headers
参数,如果您要发布手工制作的查询,则应将其附加到您的网址,以便:
start_url = "http://bombayhighcourt.nic.in/party_query.php"
raw_data = "m_hc=01&m_side=C&pageno=1&m_party=Amit+Kumar&petres=P&myr=2017&submit1=Submit"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}
res = requests.get("{}?{}".format(start_url, raw_data), headers=headers)
print(res.text) # or do whatever you want with the response
如果您愿意,requests
可以为您构建查询字符串:
start_url = "http://bombayhighcourt.nic.in/party_query.php"
raw_data = {"m_hc": "01",
"m_side": "C",
"pageno": 1,
"m_party": "Amit+Kumar",
"petres": "P",
"myr": 2017,
"submit1": "Submit"}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}
res = requests.get(start_url, params=raw_data, headers=headers)
print(res.text) # or do whatever you want with the response
更新 - 我检查了您网页的来源,并且您提交的网址错误 - 如果您打开它,则会向您提供指向{{1}的表单相反,你应该发布与所述表格的字段匹配的数据。因此,为了得到您想要的答案,您可以使用:
http://bombayhighcourt.nic.in/partyquery_action.php