如何用Selenium和Python点击网页非按钮元素并解决谷歌地图滚动问题
谷歌地图搜索结果局部滚动区域自动滚动实现
问题场景
爬取谷歌地图搜索结果时,结果展示在带独立滚动条的局部区域,而非页面整体。需要先激活该区域,才能通过按键实现自动滚动加载更多内容。
原代码问题分析
- 目标点击元素的CSS选择器错误,无法正确激活滚动区域
- 直接对
body发送滚动按键,无法作用于局部滚动容器
修正后的实现代码
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 from selenium.webdriver.common.keys import Keys import time def search_industry_and_scroll(driver, industry): driver.get('https://www.google.com/maps') # 等待搜索框加载并输入关键词 search_input = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, 'searchboxinput')) ) search_input.send_keys(industry) search_input.send_keys(Keys.RETURN) # 等待搜索结果区域加载完成 results_container = WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'div.m6QErb.DxyBCb.kA9KIf.dS8AEf')) ) # 点击结果区域激活滚动焦点 results_container.click() # 循环滚动加载更多内容 scroll_count = 0 max_scrolls = 10 # 可根据需求调整最大滚动次数,避免无限循环 while scroll_count < max_scrolls: # 对结果容器发送PAGE_DOWN按键 results_container.send_keys(Keys.PAGE_DOWN) time.sleep(2) # 等待新内容加载 scroll_count += 1 # 使用示例 if __name__ == "__main__": driver = webdriver.Chrome() try: search_industry_and_scroll(driver, "咖啡馆") finally: driver.quit()
关键优化点
- 正确定位滚动容器:使用
div.m6QErb.DxyBCb.kA9KIf.dS8AEf作为结果滚动容器的选择器(谷歌地图的元素类名可能会更新,若失效可通过开发者工具重新定位) - 激活滚动区域:点击容器获取焦点,确保后续滚动按键作用于目标区域
- 避免无限循环:添加最大滚动次数限制,防止程序一直运行
- 针对容器滚动:直接向结果容器发送滚动按键,而非页面body,确保滚动行为作用于局部区域
备选方案(JavaScript滚动)
如果按键滚动不稳定,可改用JavaScript直接操作滚动条,兼容性更好:
# 替换原滚动循环部分 scroll_count = 0 max_scrolls = 10 last_height = driver.execute_script("return arguments[0].scrollHeight", results_container) while scroll_count < max_scrolls: driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", results_container) time.sleep(2) new_height = driver.execute_script("return arguments[0].scrollHeight", results_container) if new_height == last_height: break # 高度不变说明没有新内容加载 last_height = new_height scroll_count += 1
内容的提问来源于stack exchange,提问作者Ty Gelman
相关产品推荐
相关产品推荐

