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

Python如何点击网页元素并解析关联XML文件文本抓取站点地址

解决方案

相似问题参考(已翻译)

  • 如何用Python解析网站中多个相同class名的属性
  • Selenium调试报错:元素在(x,y)坐标点不可点击

问题1:Selenium启动Chrome仅显示少量站点的修复

  • 启动Chrome时新增视口和缩放配置,确保和手动访问的环境一致:
options = webdriver.ChromeOptions()
options.add_argument("--incognito")
# 新增以下两行配置
options.add_argument("--window-size=1920,1080")
options.add_argument("--force-device-scale-factor=1")
driver = webdriver.Chrome('Directory/chromedriver.exe', options=options)
  • 若仍加载不全,可直接通过JS修改地图缩放等级,触发全量点位加载:
driver.execute_script("document.querySelector('migros-maps').setAttribute('zoom', '8')")
time.sleep(2)

问题2:「1163 STANDORTE」按钮定位失败的修复

你之前用的动态class、绝对路径XPATH稳定性极低,站点前端框架会动态生成class名,换个访问环境就会失效,改用模糊文本匹配+JS点击的方案,兼容所有场景:

# 匹配包含STANDORTE文本的按钮元素,不用绑定固定class
target_btn = WebDriverWait(driver, 20).until(
    EC.presence_of_element_located((By.XPATH, "//button[contains(normalize-space(), 'STANDORTE')]"))
)
# 用JS触发点击,跳过元素遮挡、不在视口内等不可点击限制
driver.execute_script("arguments[0].click();", target_btn)
time.sleep(3)

问题3:地址数据抓取的最优方案

不需要依赖点击按钮后加载的XML文件,该站点全量门店数据可通过公开接口直接获取,请求效率和数据完整度远高于Selenium页面抓取:

import requests
import pandas as pd

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "x-migros-api-version": "7"
}
# limit设置为2000大于站点总门店数1163,可一次拉取全量数据
req_url = "https://web-api.migros.ch/locations?types=supermarket,convenience_store,migros_bank,restaurant,hotel,gas_station,culture_school,fitness_center,apotek,click_collect,course,other&offset=0&limit=2000&longitude=6.9575&latitude=46.8202&radius=1000000"
response = requests.get(req_url, headers=headers)
all_store_data = response.json()["locations"]

# 可直接转为DataFrame导出为CSV
df = pd.DataFrame(all_store_data)
df.to_csv("migros_full_stores.csv", index=False, encoding="utf-8-sig")

如果必须抓取点击后的XML内容,在按钮点击完成后,调用driver.page_source获取全量页面源码,再用BeautifulSoup定位对应XML节点提取内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:02