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

Python网页爬取疑难:无法通过XPath获取东京充电桩标记,求高效方案

东京充电桩页面爬取问题的解决方案

问题根源

  • 该页面的充电桩信息属于动态加载内容,且地图组件大概率嵌套在iframe中,直接用固定XPath定位自然拿不到有效内容。
  • 你使用的time.sleep()是硬等待,可靠性极低,应该替换为Selenium的显式等待逻辑。

具体解决步骤

1. 处理iframe嵌套

先确认地图内容是否在iframe内:打开页面按F12,搜索iframe标签,若存在则需先切换到iframe上下文:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 初始化浏览器
driver = webdriver.Chrome()
driver.get('https://www2.evphvchargemap.com/map/tokyo')

# 等待iframe加载完成并切换上下文
wait = WebDriverWait(driver, 20)
iframe = wait.until(EC.presence_of_element_located((By.TAG_NAME, "iframe")))
driver.switch_to.frame(iframe)

2. 用显式等待替代硬等待

放弃time.sleep(30),改用显式等待目标元素出现,示例代码:

# 等待充电桩元素加载(需根据实际页面结构调整XPath)
spots = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//div[contains(@class, 'spot-container')]")))

for spot in spots:
    # 提取名称和地址,需匹配实际元素的class或标签
    spot_name = spot.find_element(By.XPATH, ".//dt[contains(@class, 'spot-name')]").text
    spot_address = spot.find_element(By.XPATH, ".//dd[contains(@class, 'spot-address')]").text
    print(f"充电桩名称: {spot_name}, 地址: {spot_address}")

# 关闭浏览器
driver.quit()

3. 更高效的爬取方式:直接抓取API接口

动态加载网站通常会通过API接口返回原始数据,比模拟浏览器更高效:

  • 打开浏览器开发者工具(F12),切换到Network标签,刷新页面。
  • 搜索包含spot、charger、tokyo的请求,找到返回JSON格式充电桩数据的接口。
  • 用requests库直接请求接口解析数据,示例代码:
import requests

# 需自行确认实际接口URL,以下为示例
api_url = "https://www2.evphvchargemap.com/api/tokyo-chargers"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

response = requests.get(api_url, headers=headers)
data = response.json()

for item in data["chargers"]:
    print(f"名称: {item['name']}, 地址: {item['address']}, 充电桩数量: {item['count']}")

注意事项

  • 抓取API时要注意携带User-Agent、Referer等请求头参数,避免被反爬拦截。
  • 若需加载更多数据,Selenium可模拟滚动操作,API接口则需查看是否有page、offset等分页参数。

内容的提问来源于stack exchange,提问作者Mihir Savkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:35:38