我有一个地址列表list_x = ['A', 'B', 'C', 'D']
,我想发送到谷歌Map搜索这些值一个接一个。
我的代码:
from selenium import webdriver
import time
from time import sleep
path = r"C:/Users/admin/chromium-browser/chromedriver.exe"
options = webdriver.ChromeOptions()
options.binary_location = r"C:\Users\sonpn.vbi\AppData\Local\Google\Chrome\Application\chrome.exe"
driver = webdriver.Chrome(path, chrome_options=options)
driver.get("https://www.google.co.in/maps/@10.8091781,78.2885026,7z")
sleep(2)
for index, item in enumerate(list_x, start=0):
Place = driver.find_element("class name", "tactile-searchbox-input").send_keys(item)
Submit = driver.find_element("xpath", "//*[@id='searchbox-searchbutton']").click()
result = driver.find_elements("xpath", '//*[@id="QA0Szd"]/div/div/div[1]/div[2]/div/div[1]/div/div/div[2]/div[1]/div[1]')
convert1 = [el.text for el in result]
convert.extend(convert1)
time.sleep(3)
close = driver.find_element('xpath', '//*[@id="sb_cb50"]').click()
错误是
Web驱动程序异常:消息:无法访问chrome(会话信息: chrome = 97.0.4692.71)
请帮助我解决此错误。谢谢
2条答案
按热度按时间iugsix8n1#
此错误消息...
...表示ChromeDriver无法启动/产生新的 * 浏览上下文 *,即google-chrome会话。
您的主要问题是所使用的二进制文件版本之间的不兼容性,如下所示:
因此,* chromedriver = 97.0 * 和 * chrome = 104.0 * 之间存在明显的不匹配
溶液
确保:
66bbxpm52#
作为一种替代解决方案,您可以使用API,例如SerpApi的Google Maps Place Results API(付费API,具有在其后端处理块和解析的免费计划)。
开始,我们创建一个所需地址的列表和一个带有坐标的列表(坐标可以在所需地址的URL中找到):
接下来,我们使用
zip()
遍历列表,从API响应中获取完整地址,并使用regular expression提取城市名称:检查在线IDE中的完整代码。
输出示例:
如果你需要更多的代码解释和如何提取其他数据,有一篇Using Google Maps Place Results API from SerpApi using Python的博客文章。
免责声明我为SerpApi工作。