python - 我们如何遍历坐标项目,将每个项目加载到 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”。这就是我想要得到的。
解决方案
推荐阅读
- apache - 如何在 Apache 配置中隐藏 URL 中的查询参数?
- python - 在 Eve 的 pre-put 回调中从数据库中获取项目的信息
- angular - TS2345:“RolesGuard”类型的参数不可分配给“CanActivate”类型的参数
- autosar - adaptive AUTOSAR - difference between function group and application?
- package - Installing Racket Packages without installing Dr Racket
- elasticsearch - 如何使用映射将符号映射到弹性搜索中的单词?
- sql - Oracle 嵌套表约束
- outlook - 64 位应用程序中的 .msg 预览不起作用
- c# - 如果存在,如何删除最后一个字符串元素不必要的文本?
- vb.net - 需要 STMP 身份验证