我试图通过谷歌Map搜索与python,我想从结果中获得的网址。
以下步骤I方法:
1.打开谷歌
1.接受cookies
1.搜索随机事物(本例中为"阿尔高的儿科医生")
1.切换到谷歌Map
这就是我得到错误的地方,因为我试图等待结果加载,但我总是得到一个超时。我可以在打开的窗口中看到,结果已完全加载。
我的代码有什么问题吗?我想提取结果的网站URL。
下面是我目前拥有的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Start the browser
driver = webdriver.Chrome()
# Open google.de and accept cookies
driver.get("https://www.google.de/")
wait = WebDriverWait(driver, 25)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#L2AGLb > div"))).click()
# Search for "Kinderarzt Kanton Aargau"
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Kinderarzt Kanton Aargau")
search_box.submit()
# Switch to Maps tab
wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Maps')]"))).click()
# Wait for links and extract
results = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div[aria-label^='Results for'] > div > div > a")))
for result in results:
link = result.get_attribute("href")
print(link)
# Close the browser
driver.quit()
PS:我试过增加webdriver的运行时间,但是没有用。我想它找不到对象,一定有别的方法来识别对象。
1条答案
按热度按时间dluptydi1#
首先,您可以跳过几个步骤,只需使用所需的搜索字符串构建Google Maps的URL。其次,您的"等待结果加载"定位器不在我的页面上。我猜您使用的类是定期更改的。我使用了不同的CSS选择器,发现它刚刚好。
结果是