<urlopen error =“”tunnel =“”connection =“”failed:=“”403 =“”forbidden =“”>在pythonanywhere服务器上使用geopy时出错

时间:2015-07-18 11:07:26

标签: python pythonanywhere geopy

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

   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))

2 个答案:

答案 0 :(得分:2)

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

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

(或者,当然,您可以升级到付费帐户 - 因为我们可以将它们连接到真实用户,但不受白名单限制。: - )

答案 1 :(得分:0)

很难从您的问题中说出来,但问题可能是解码错误。

试试这个:

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

这将确保结果将是英语,而不是一些外语。