json R/Python:从GoogleMap中提取信息

hs1ihplo  于 2023-08-08  发布在  Python
关注(0)|答案(3)|浏览(134)

我正在使用R和Python语言。
假设我在GoogleMap上搜索以下加拿大邮政编码(M5 V 3L 9):
https://www.google.com/maps/place/Toronto,+ON+M5V+3L9/@43.642566,-79.3875851,18z/data=!4m6!3m5!1s0x882b34d436f9c825:0x9e9c6195e38030f2!8m2!3d43.6429129!4d-79.3853443!16s%2Fg%2F1tvq4rqd?entry=ttu
当我搜索这个时,我可以看到这个邮政编码的“周长”以红色突出显示:
x1c 0d1x的数据

我的问题:(通过R/Python使用Selenium)从HTML/CSS/XML的Angular 来看-我试图获得构成此周长边界的所有坐标的列表。

我一直在尝试探索从这个网站生成的源代码,看看是否有什么我可以做的事情,看看这个周边的源代码(例如:在JSON中)正在存储-但到目前为止,我找不到任何东西:



我希望也许有什么东西可以让我使用Selenium反复点击这个周长并提取经度/纬度点-但到目前为止,我什么也找不到。
有人能教我怎么做吗?
谢谢你,谢谢

:通用Selenium代码:

library(RSelenium)
library(wdman)
library(netstat)

selenium()
seleium_object <- selenium(retcommand = T, check = F)

remote_driver <- rsDriver(browser = "chrome", chromever = "114.0.5735.90", verbose = F, port = free_port())

remDr<- remote_driver$client

remDr$navigate("https://www.google.com/maps/place/Toronto,+ON+M5V+3L9/@43.642566,-79.3875851,18z/data=!4m6!3m5!1s0x882b34d436f9c825:0x9e9c6195e38030f2!8m2!3d43.6429129!4d-79.3853443!16s%2Fg%2F1tvq4rqd?entry=ttu")

字符串

wxclj1h5

wxclj1h51#

您可以使用PyAutoGui库在屏幕上查找红色轮廓的HEX值,然后将鼠标移动到该点,右键单击,然后使用另一个库的文本识别(如pytesseract)来扫描右键单击菜单中出现的纬度和经度坐标。我不确定文本识别,但PyAutoGui部分非常容易实现,大约10行代码。这是一个如何实现的示例:

import pyautogui

def find_and_right_click(color):
    screen_width, screen_height = pyautogui.size()
    for x in range(screen_width):
        for y in range(screen_height):
            pixel_color = pyautogui.pixel(x, y)
            if pixel_color == color:
                pyautogui.moveTo(x, y)
                pyautogui.rightClick()

target_color = (234, 68, 54)

find_and_right_click(target_color)

字符串
下面是如何使用Selenium完成部分任务:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
actions = ActionChains(driver)
actions.context_click(element).perform() #right click


从我的理解来看,你不能用 selenium 得到单个像素的rgb值,但你可以得到一个元素的rgb值。这意味着我们将无法找到我们想要将光标移动到的像素的rgb值(红色边界)。安装pyautogui会更容易(pip install pyautogui

pexxcrt2

pexxcrt22#

library(RSelenium)
library(wdman)
library(netstat)

selenium()
selenium_object <- rsDriver(browser = "chrome", chromever = "114.0.5735.90", verbose = FALSE, port = free_port())

remDr <- selenium_object$client

remDr$navigate("https://www.google.com/maps/place/Toronto,+ON+M5V+3L9/@43.642566,-79.3875851,18z/data=!4m6!3m5!1s0x882b34d436f9c825:0x9e9c6195e38030f2!8m2!3d43.6429129!4d-79.3853443!16s%2Fg%2F1tvq4rqd?entry=ttu")

字符串

3duebb1j

3duebb1j3#

导入所需库

从地理。地理编码器导入命名

初始化命名API

geolocator = Nominatim(user_agent=“MyApp”)
location = geolocator.geocode(“Hyderabad”)
print(“位置的纬度是:“,location.latitude)print(“位置的经度是:“,位置.经度)

相关问题