使用请求形成自动完成 URL 时遇到问题
Posted
技术标签:
【中文标题】使用请求形成自动完成 URL 时遇到问题【英文标题】:Trouble forming an autocompletion url using requests 【发布时间】:2022-01-02 23:35:23 【问题描述】:当我访问此site 并写入任何地址时,如ENTER A LOCATION
下输入框中的Taekwondo Mattighofen, Am Steinbach, Lochen am See, Austria
,我可以在开发工具中看到此autocompletion url,其中包含this 之类的参数。该自动完成网址的完整形式类似于 this,它会产生纬度和经度的值。
不过,我发现在我的以下脚本中使用从上述 api 手动获取的纬度和经度值来生成最终结果是成功的。
import requests
from bs4 import BeautifulSoup
link = 'https://www.ktm.com/content/websites/ktm-com/middle-east/ae/en/dealer-search/jcr:content/root/responsivegrid_1_col/dealersearch.dealers.json'
params =
'latitude': '48.0075483',
'longitude': '13.1848824',
'country': '',
'qualification': '',
'distance': '50'
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
res = s.get(link,params=params)
print(res.json())
如何使用基于请求构建的 python 脚本基于任何地址(如
Nachhilfe Mattighofen, Rosengasse, Mattighofen, Austria
)生成这样的自动完成 url?
【问题讨论】:
建议来自GoogleMaps API
。
你为什么要免费卸载一个付费访问这个 API 的网站?看起来非常不道德,很可能是非法的。
【参考方案1】:
如前所述,这些建议来自 GoogleMaps API。
您需要在您的 Google Cloud 帐户中启用结算功能,创建一个项目和一个密钥。然后,很容易获得推荐,如here所述:
import googlemaps
from datetime import datetime
gmaps = googlemaps.Client(key='Add Your Key here')
# Geocoding an address
geocode_result = gmaps.geocode('1600 Amphitheatre Parkway, Mountain View, CA')
这就是网站正在做的事情。他们创建了一个 API 密钥,将其捆绑到网站中,并允许用户获得地理位置建议。他们每次查询都要收费,而且他们可能通过只允许来自其 URL 的请求来保护他们的 API 密钥。
尝试使用第三个网站发送地理定位请求不是一个好主意。他们也很可能拥有 WAF 并阻止您的 IP。
一个开源地理编码服务是Nominatim。您不应期待与 Google 地图一样的准确性和结果。
【讨论】:
以上是关于使用请求形成自动完成 URL 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章