请求在发布请求后不检索站点

时间:2021-01-31 21:37:14

标签: python web-scraping python-requests

我想从这个网站抓取数据:https://ispu.mgipu.hr/

这是过程(至少放大到 1:5000 之后):

  1. 您必须点击右侧有正方形、三角形和圆形的符号。
  2. 然后您必须点击下方的“信息 lokacija”。
  3. 然后您必须在“Odabir”上方选择“Poligonom”。
  4. 现在您必须用鼠标绘制任何东西(完成后双击)。

如果您检查网络,您会看到一个新请求出现:'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))

1 个答案:

答案 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 的变化之外,发布请求不会向您发送太多信息......

再见