python - 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)
解决方案
据我所知,此页面不提供 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 密钥,请参阅文档以获取相关说明。
推荐阅读
- reactjs - TypeError:无法读取未定义的属性(读取“工具提示”)
- wordpress - 我如何将邮政编码订单与运输区域匹配
- for-loop - 如何在verilog中使用case语句而不是for循环
- angular - MatFormFieldHarness 无法从角度单元测试中识别
- powershell - 尝试创建变量时运行的 cmdlet
- android - 用于集成到 CI 管道中的 Android Studio 代码检查 shell 脚本
- abap - 如何从第二张表的薪水列中的第一张表中查找具有第二高和第三低薪水的员工姓名,而无需在 ABAP 中进行排序
- java - 使用 WHERE IN SQL 子句将字符串值从单个值拆分为多个值以获取数据
- azure - 连接运行状况代理 - 防火墙规则(到 Azure 服务终结点的出站连接)
- angular - 我如何解决角度反应形式的错误