如何使用Selenium或BeautifulSoup爬取谷歌地图热门时段?
爬取谷歌地图热门时段的可行方法
使用Selenium爬取
- 初始化浏览器实例,打开目标地点的谷歌地图页面,等待页面完全加载(热门时段属于动态渲染内容,需等待对应元素加载完成)
- 定位并提取数据:
- 日期名称:通过选择器
div[aria-label^="Popular"][role=region] div[role="img"]定位元素,提取文本后用字典映射把英文日期转为中文(比如Monday转周一) - 时段拥挤数据:定位
div[role="img"][class^="dpoVld"]元素,读取其aria-label属性,获取具体的繁忙程度描述(如"现在的繁忙程度为65%")
- 日期名称:通过选择器
- 反爬注意:设置合理的等待间隔,添加随机延迟,可启用无头浏览器模式,降低被反爬检测的概率
使用BeautifulSoup爬取
- 由于热门时段是动态渲染内容,直接用
requests请求静态HTML无法获取数据,需先获取渲染后的页面源码:- 可借助
requests-html库的render()方法加载动态内容,或者先用Selenium打开页面后导出源码
- 可借助
- 解析渲染后的HTML:
- 提取日期:用
soup.select('div[aria-label^="Popular"][role=region] div[role="img"]')获取所有日期元素,遍历提取文本并转中文 - 提取时段数据:用
soup.select('div[role="img"][class^="dpoVld"]')定位元素,提取每个元素的aria-label属性值,得到对应时段的拥挤信息
- 提取日期:用
日期转换小技巧
提前定义英文转中文的映射字典:
en_to_zh_date = { "Monday": "周一", "Tuesday": "周二", "Wednesday": "周三", "Thursday": "周四", "Friday": "周五", "Saturday": "周六", "Sunday": "周日" }
提取英文日期后,直接通过字典替换得到中文日期。
内容的提问来源于stack exchange,提问作者saurav
相关产品推荐
相关产品推荐

