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

网页爬取技术问询:提取allTyres变量轮胎数据并导出CSV

轮胎数据爬取与CSV导出实现方案(Python)

1. 环境准备

先安装所需依赖库:

pip install requests beautifulsoup4 pandas json

2. 核心实现步骤

步骤1:获取网页源代码

模拟浏览器请求目标页面,拿到完整HTML内容:

import requests
import re
import json
import pandas as pd

# 目标网址
url = "http://www.dexel.co.uk/shopping/tyre-results?width=205&profile=55&rim=16&speed="
# 请求头,避免被反爬拦截
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(url, headers=headers)
response.encoding = response.apparent_encoding
html_content = response.text

步骤2:提取var allTyres中的数据

用正则匹配出变量内的JSON结构,转换为Python可处理的列表:

# 匹配var allTyres后的JSON数组
pattern = re.compile(r'var allTyres = (\[.*?\]);', re.DOTALL)
match = pattern.search(html_content)
if not match:
    print("未定位到allTyres数据块")
    exit()

# 转成Python数据结构
tyres_list = json.loads(match.group(1))

步骤3:提取目标字段

遍历轮胎数据,按需提取字段,处理冬季/夏季轮胎的标记:

processed_data = []
for tyre in tyres_list:
    # 提取基础字段,缺失时用空字符串兜底
    brand = tyre.get('manufacturer', '')
    desc = tyre.get('description', '')
    price = tyre.get('price', '')
    
    # 处理冬季/夏季标记:1代表是,0代表否
    is_winter = 1 if tyre.get('winter') else 0
    # 假设非冬季胎即为夏季胎,若有四季胎需根据实际字段调整判断逻辑
    is_summer = 1 if not tyre.get('winter') else 0
    
    processed_data.append({
        "manufacturer": brand,
        "description": desc,
        "winter": is_winter,
        "summer": is_summer,
        "price": price
    })

步骤4:导出为CSV格式

用pandas将整理后的数据写入CSV文件:

df = pd.DataFrame(processed_data)
# 导出时禁用索引,用utf-8-sig避免中文乱码
df.to_csv('tyres_data.csv', index=False, encoding='utf-8-sig')
print("数据已成功导出到 tyres_data.csv")

3. 注意事项

  • 若频繁请求被网站拦截,可添加time.sleep(1)(需导入time库)设置请求间隔
  • 若后续网站结构变更,需重新调整正则匹配规则或字段提取逻辑
  • 部分轮胎可能存在特殊类型(如四季胎),需根据页面实际数据调整summer字段的判断逻辑

内容的提问来源于stack exchange,提问作者Tae-Cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:25:34