You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Selenium提取SVG viewBox内的营业时间数据

使用Python Selenium提取TripAdvisor餐厅营业时间

下面是针对你需求的具体实现步骤和代码:

1. 环境准备

  • 安装Selenium:在终端运行 pip install selenium
  • 下载对应浏览器的驱动(比如ChromeDriver),确保驱动版本和你的浏览器版本匹配,可将驱动路径配置到系统环境变量,或在代码中直接指定路径。

2. 核心代码实现

以Chrome浏览器为例,代码包含Cookie弹窗处理、元素等待、点击svg展开营业时间、提取数据的完整逻辑:

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

# 初始化浏览器(若驱动未在环境变量,需指定executable_path参数)
driver = webdriver.Chrome()
# 访问目标页面
driver.get("https://www.tripadvisor.in/Restaurant_Review-g32655-d7222445-Reviews-The_Anchor-Los_Angeles_California.html")

try:
    # 处理Cookie弹窗,点击同意按钮(适配中英文文案)
    cookie_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), '同意') or contains(text(), 'Accept')]"))
    )
    cookie_btn.click()

    # 等待svg元素加载完成并点击(通过viewBox属性定位)
    hours_svg = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//svg[@viewBox='0 0 24 24']"))
    )
    hours_svg.click()

    # 等待营业时间区域加载,提取文本
    hours_text = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'hours') or contains(text(), '营业时间')]"))
    ).text

    # 输出结果
    print("营业时间:")
    print(hours_text)

finally:
    # 关闭浏览器
    driver.quit()

3. 关键注意事项

  • 元素定位:如果上述svg的XPath定位失效,可右键检查页面,复制该svg元素的完整XPath或CSS选择器替换使用
  • 显式等待:务必使用WebDriverWait而非固定sleep,避免因页面加载缓慢导致元素找不到的问题
  • 驱动适配:保证浏览器驱动版本与浏览器版本完全匹配,否则会出现启动失败的情况

内容的提问来源于stack exchange,提问作者hari ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:57:09