首页 > 解决方案 > 我们如何遍历坐标项目,将每个项目加载到 Google 地图页面中,并从每个页面中获取一个元素?

问题描述

我正在测试下面的代码,它应该遍历数据框列中的项目,将每个项目加载到谷歌地图中,​​并从每个页面中获取一个“标题”。我想将结果推送到数据框中的列中(df_fin['my_place'] = driver.title)。

我注意到的问题是第一个记录工作得很好,但没有后续项目工作。我猜页面刷新有问题,或者点击事件有问题,但我不确定这里发生了什么。

import pandas as pd
df_fin = pd.read_csv('C:\\Users\\df_fin.csv')

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time

driver = webdriver.Chrome('C:\\Users\\TryMe\\chromedriver.exe')
driver.maximize_window()
driver.implicitly_wait(5)

i = 1

for item in df_fin['place']:
    try:
        driver.get(item)
        wait = WebDriverWait(driver, 10)
        main_canvas = wait.until(EC.element_to_be_clickable((By.XPATH, "//*[name()='canvas']")))
        size = main_canvas.size
        w, h = size['width'], size['height']
        new_w = w/2
        new_h = h/2
        ActionChains(driver).move_by_offset(new_h, new_h).pause(5).perform()
        time.sleep(2)
        wait.until(EC.element_to_be_clickable((By.XPATH, "//*[name()='canvas']"))).click()
        print(driver.title)
        df_fin['my_place'] = driver.title
    except:
        df_fin['my_place'] = 'OTHER'

    i = i + 1
    print(i)

df_fin.head(10)

这是我的数据框中的示例。

https://www.google.com/maps/@42.33988,-71.10409,18z
https://www.google.com/maps/@39.73914,-75.54937,18z
https://www.google.com/maps/@44.4995,-88.05496,18z
https://www.google.com/maps/@44.50235,-88.06322,18z
https://www.google.com/maps/@40.82265,-73.40959,18z

最后,在下图中,您可以看到“title”是“Rod Laver Arena”。这就是我想要得到的。

在此处输入图像描述

标签: pythonpython-3.xseleniumselenium-chromedriver

解决方案


推荐阅读