【问题标题】:python post request not generating responsepython post请求未生成响应
【发布时间】:2018-06-10 11:09:18
【问题描述】:

我正在尝试创建一个 python 脚本来使用纬度和经度计算两个城市之间的距离。其中我从用户那里获取城市的名称并使用这个link 找到坐标。 但是,当发布城市名称时,我无法生成响应(我得到整个 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)

【问题讨论】:

  • requests 用于获取 html 响应,所以我不确定您收到 html 响应有什么问题。你期待什么?预期的输出是多少?
  • 显然您必须解析响应以获取所需数据。如何 ?这取决于响应数据的类型和格式。
  • 我用漂亮的汤解析了响应。我得到整个 html 页面作为响应。因为我期望输出是纬度。我尝试使用 soup.find(id="latitude") 来获取坐标,但它什么也没打印。我对 python 完全陌生

标签: python forms post maps


【解决方案1】:

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

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

这个过程被广泛描述here

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

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 密钥,请参阅文档以获取相关说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2017-09-25
    相关资源
    最近更新 更多