【问题标题】:<urlopen error Tunnel connection failed: 403 Forbidden> error in using geopy on pythonanywhere servers<urlopen 错误隧道连接失败:403 Forbidden> 在 pythonanywhere 服务器上使用 geopy 时出错
【发布时间】:2015-07-18 11:07:25
【问题描述】:

我正在尝试通过我的网站使用 geopy 从用户位置坐标获取地址,该网站托管在 pythonanywhere 服务器上。
以下是我在烧瓶中用于完成此操作的代码。

   from geopy.geocoders import Nominatim
   geolocator = Nominatim()
   @app.route('/location', methods = ['POST'])
   def location():
       latitude = request.json['latitude']
       longitude = request.json['longitude']
       location = geolocator.reverse(str(latitude)+ "," + str(longitude))
       send_email("myemail@example.com","Location:",str(location.address))

【问题讨论】:

标签: python pythonanywhere geopy


【解决方案1】:

PythonAnywhere 开发人员:PythonAnywhere 上的免费帐户只能访问一组有限的外部网站(白名单),以阻止人们在我们的网站上注册一次性免费帐户,然后使用它们攻击其他网站。我的猜测是您的 GeoIP 查找正在尝试访问未列入白名单的站点。

如果网站有官方的公共 API,我们通常很乐意将其添加到白名单中,因此,如果您可以追踪您的应用尝试访问的网站并为我们提供主机名和 API 文档的链接,我们可能可以在那里得到它,你的代码就可以工作了。

(或者,当然,您可以升级到付费帐户——因为我们可以将他们与真实的人联系起来,他们不受白名单的限制。:-)

【讨论】:

    【解决方案2】:

    从你的问题很难说,但问题可能是解码错误。

    试试这个:

    location = geolocator.reverse(str(latitude)+ "," + str(longitude), language="en")
    

    这将确保结果是英语,而不是某种外语。

    【讨论】:

    • 这并没有解决这个错误。错误是关于 urlib 包我猜@omri_saadon
    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    相关资源
    最近更新 更多