Python 3.x 如何从地址抓取谷歌地图获取纬度和经度?

Python 3.x 如何从地址抓取谷歌地图获取纬度和经度?,python-3.x,web-scraping,beautifulsoup,Python 3.x,Web Scraping,Beautifulsoup,我正在尝试使用get请求获取地址的纬度和经度,但我很难做到这一点 地址由街道名称、号码和城市的一个区域组成。在这种情况下,街道名称为Hernando de Magallanes,编号为958,扇区为Las Condes 我的代码如下所示: import requests from bs4 import BeautifulSoup as soup url = "https://www.google.cl/maps/place/Hernando+de+Magallanes+958,+La

我正在尝试使用get请求获取地址的纬度和经度,但我很难做到这一点

地址由街道名称、号码和城市的一个区域组成。在这种情况下,街道名称为
Hernando de Magallanes
,编号为
958
,扇区为
Las Condes

我的代码如下所示:

import requests
from bs4 import BeautifulSoup as soup

url = "https://www.google.cl/maps/place/Hernando+de+Magallanes+958,+Las+Condes"
resp=requests.request(method="GET",url=url)

soup_parser = soup(resp.text, "html.parser")
我要找的部分在script下,它在hmtl标记下

html_content = soup_parser.html.contents[1]

_script = html_content.find_all("script")[7]
查看
\u script
,有大量文本,但我要查找的部分是
https
url,它位于此处:

。。。。UPFJZVD6AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhttps://www.google.cl/maps/preview/place/Hernando+德+马加兰+958,+Las+Condes,+地区%C3%B3n+Metropolitana/@-33.4164174,-70.559874630A,13.1y/数据\\u003d!4m2!3m1!1s0x9662ceef18131219:0x3bab969f4e95bd4e\”,1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,null,null,null,null,null,null,null,0,[[[\“W2vSX-\u FKMv39QOpipUw\”,“0AHUKEWIV3531H8TTAHXL30KHSLFBQYWLUIGCGAMAA\”,[\“Hernando d…”

特别是,我正在查找
@
->
-33.4164174,-70.5598746
旁边的两个数字


我怎样才能得到这个坐标?另外,我正在考虑对其他一些地址进行此操作。此请求是否有每日配额?

尝试此代码片段并相应地修改它?(不知道您的搜索条件和代码示例是什么,只需将此作为示例)

输出:

48.8573° N, 2.3370° E
Latitude: -33.4164174
Longitude: -70.5598746

尝试此代码段并相应地修改它?(不知道您的搜索条件和代码示例是什么,只需将此作为示例)

输出:

48.8573° N, 2.3370° E
Latitude: -33.4164174
Longitude: -70.5598746

使用正则表达式regex
re
。并使用模式

import requests
from bs4 import BeautifulSoup as soup
import re

url = "https://www.google.cl/maps/place/Hernando+de+Magallanes+958,+Las+Condes"
resp=requests.request(method="GET",url=url)

soup_parser = soup(resp.text, "html.parser")

html_content = soup_parser.html.contents[1]

_script = html_content.find_all("script")[7]

matches=re.findall("(-\d+\.\d{7})",_script.text)
print(matches[0],matches[1])

使用正则表达式regex
re
。并使用模式

import requests
from bs4 import BeautifulSoup as soup
import re

url = "https://www.google.cl/maps/place/Hernando+de+Magallanes+958,+Las+Condes"
resp=requests.request(method="GET",url=url)

soup_parser = soup(resp.text, "html.parser")

html_content = soup_parser.html.contents[1]

_script = html_content.find_all("script")[7]

matches=re.findall("(-\d+\.\d{7})",_script.text)
print(matches[0],matches[1])

您需要查看页面的源代码并解析
窗口。APP\u INITIALIZATION\u STATE
变量块,在那里您将找到所有需要的数据


你也可以使用SerpApi。这是一个免费试用的付费API

要集成的代码:

import os
from serpapi import GoogleSearch

params = {
    "engine": "google_maps",
    "type": "search",
    "q": "Hernando de Magallanes 958 Las Condes",
    "ll": "@40.7455096,-74.0083012,14z",
    "google_domain": "google.com",
    "api_key": os.getenv("API_KEY"),
}

search = GoogleSearch(params)
results = search.get_dict()

coordinates = results["place_results"]["gps_coordinates"]
latitude = coordinates['latitude']
longitude = coordinates['longitude']

print(f"Latitude: {latitude}\nLongitude: {longitude}")
输出:

48.8573° N, 2.3370° E
Latitude: -33.4164174
Longitude: -70.5598746
免责声明,我为SerpApi工作


您需要查看页面的源代码并解析
窗口。APP\u INITIALIZATION\u STATE
变量块,在那里您将找到所有需要的数据


你也可以使用SerpApi。这是一个免费试用的付费API

要集成的代码:

import os
from serpapi import GoogleSearch

params = {
    "engine": "google_maps",
    "type": "search",
    "q": "Hernando de Magallanes 958 Las Condes",
    "ll": "@40.7455096,-74.0083012,14z",
    "google_domain": "google.com",
    "api_key": os.getenv("API_KEY"),
}

search = GoogleSearch(params)
results = search.get_dict()

coordinates = results["place_results"]["gps_coordinates"]
latitude = coordinates['latitude']
longitude = coordinates['longitude']

print(f"Latitude: {latitude}\nLongitude: {longitude}")
输出:

48.8573° N, 2.3370° E
Latitude: -33.4164174
Longitude: -70.5598746
免责声明,我为SerpApi工作


您好,谢谢您的回答!我添加了一些地址和街道名称的详细信息。此外,还添加了我正在使用的url(我在写问题时忘了添加)。关于代码示例,我发布的内容与我目前所拥有的内容基本相同。我正在尝试找出如何获取所述地址的经度和纬度,然后我希望将其复制到其他地址。您好,谢谢您的回答!我添加了一些地址和街道名称的详细信息。此外,还添加了我正在使用的urlng(我在写问题的时候忘了加上它)。关于代码示例,我发布的内容与我目前所拥有的内容基本相同。我正在尝试找出如何获得所述地址的经度和纬度,然后我想对其他地址复制相同的内容。