首页 > 解决方案 > python post请求未生成响应

问题描述

我正在尝试创建一个 python 脚本来使用纬度和经度计算两个城市之间的距离。其中我从用户那里获取城市的名称并使用此链接查找坐标。但是,当发布城市名称时,我无法生成响应(我得到整个 html 作为响应)

import requests
city1=input("Enter the first city")
url="https://gps-coordinates.org/"
data={'address':city1}
r=requests.post(url,data=data)
print(r.status_code)
print(r.text)

标签: pythonformspostmaps

解决方案


据我所知,此页面不提供 API。API 将使解析响应变得容易。由于他们没有 API,您必须解析 HTML 并提取相关信息。这可能会很困难,因为页面本身仅使用谷歌地图来查找位置。

幸运的是,谷歌为此任务提供了一个 API,即为给定名称的地点查找坐标的过程(这通常称为地理编码)。如果您执行的请求很少,您可以免费使用他们的 API,在一定的限制下,您甚至不需要为他们设置帐户。

该过程在此处进行了广泛描述

对于您的用例,您可以轻松地调整您的脚本:

import requests

city1 = input("Enter the first city")
url = "https://maps.googleapis.com/maps/api/geocode/json"
data = {"address": city1}
r = requests.post(url, params=data)
print(r.status_code)
print(r.text)

请注意,参数是通过查询字符串提供的。

如果您要执行多个请求,请确保设置一个帐户并随请求发送 API 密钥,请参阅文档以获取相关说明。


推荐阅读