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

使用Python 3.9提取Tamoil门店地址至Excel,代码仅生成表头无数据

解决Python爬取Tamoil店铺地址无数据的问题

原代码无法获取地址数据的核心原因是目标页面的店铺信息通过JavaScript动态加载,requests.get()仅能获取页面的静态HTML骨架,此时store-element这类包含地址的元素还未被渲染,导致soup.find_all('div', class_='store-element')返回空列表,最终Excel仅显示表头。

解决方案

通过浏览器开发者工具抓包找到加载店铺数据的后台API接口,直接请求该接口获取结构化JSON数据,再提取地址信息。

修改后的代码

import requests
import pandas as pd

# 实际加载店铺数据的API接口(通过浏览器抓包获取)
api_url = "https://www.tamoil.ch/api/stores?lang=en&lat=46.8181877&lng=8.2275124&radius=100000"

# 请求API并处理响应
response = requests.get(api_url)
response.raise_for_status()  # 捕获请求失败的异常
store_data = response.json()

# 提取并拼接完整地址
addresses = []
for store in store_data:
    address_components = [
        store.get('street'),
        f"{store.get('zip')} {store.get('city')}",
        store.get('country')
    ]
    # 过滤空字段,拼接成换行分隔的完整地址
    full_address = '\n'.join(filter(None, address_components))
    addresses.append(full_address)

# 保存到Excel
df = pd.DataFrame({'Address': addresses})
excel_file = 'tamoil_addresses.xlsx'
df.to_excel(excel_file, index=False)

print(f"Addresses saved to {excel_file}")

补充说明

  • 如何获取API接口:打开浏览器F12开发者工具→切换到「网络」面板→刷新页面→筛选「XHR/Fetch」类型请求,找到返回店铺列表的请求,复制其URL作为api_url。
  • 若API返回的字段结构有变化,可根据实际JSON数据调整address_components中的字段名,确保提取正确的地址信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:07:09