我想从这个网站抓取数据:https://ispu.mgipu.hr/
这是过程(至少放大到 1:5000 之后):
如果您检查网络,您会看到一个新请求出现:'obuhvat'。
我试图直接向同一个站点发出 POST 请求,但我总是得到我的正文为空的答案。
我只在我首先在浏览器中完成所有操作并在 python 中重复请求时工作。
这是我的尝试:
s = requests.Session()
s.get('https://ispu.mgipu.hr/')
data = {
"geom":"POLYGON((460050.4401008804 5073385.306770615,460196.600393201 5073256.506513015,460327.64065528155 5073458.106916216,460183.16036632087 5073556.107112216,460050.4401008804 5073385.306770615))"
}
s.post('https://ispu.mgipu.hr/geo/api/info-lokacija/obuhvat',
data=json.dumps(data))
答案 0 :(得分:0)
因为您必须放置“json”而不是“data”(并放置标题)。以下代码对我有用:
import requests as rq
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0"}
url = "https://ispu.mgipu.hr/geo/api/info-lokacija/obuhvat"
data = {
"geom":"POLYGON((460050.4401008804 5073385.306770615,460196.600393201 5073256.506513015,460327.64065528155 5073458.106916216,460183.16036632087 5073556.107112216,460050.4401008804 5073385.306770615))"
}
resp = rq.post(url, json=data, headers=headers)
无需事先进行“获取”查询并创建会话。
除了 CRS 的变化之外,发布请求不会向您发送太多信息......
再见