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

如何用Python抓取<tr>标签中多内容并拆分至3个变量?

解决方案

问题出在你直接提取了<tr>标签的全部文本,没有按内部的<td>标签拆分内容。网页中每个车型的品牌、型号、交期分别对应<tr>里的不同<td>元素,我们需要逐个提取这些<td>的内容。

修改后的代码

from bs4 import BeautifulSoup
import requests

URL = 'https://www.carwow.de/neuwagen-lieferzeiten#gref'
response = requests.get(URL)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'lxml')

# 遍历所有包含车型数据的tbody
for tbody in soup.find_all('tbody'):
    # 处理每个车型行
    for row in tbody.find_all('tr'):
        # 获取当前行的所有<td>元素
        tds = row.find_all('td')
        # 跳过无效行(比如表头或空行)
        if len(tds) >= 3:
            # 提取并清洗各字段内容
            oem = tds[0].text.strip()
            model = tds[1].text.strip()
            # 处理交期里的换行,用逗号分隔多段交期
            leadtime = tds[2].text.strip().replace('\n', ', ')
            
            # 按指定格式输出
            print(f"{oem}, {model}, {leadtime}")

代码说明

  1. 定位元素:通过<tbody>和<tr>定位到每一行车型数据,再用<td>拆分出品牌、型号、交期三个部分。
  2. 数据清洗:用strip()去除文本前后的空格和换行,对包含多段交期的内容,用replace('\n', ', ')将换行替换为逗号分隔。
  3. 跳过无效行:通过判断<td>数量过滤掉表头或空行,避免报错。

运行这段代码后,输出会符合你预期的格式:

Renault, Mégane E-Tech, 12 Monate
Nissan, Ariya, 6 Monate
Peugeot, e-208, 6-7 Monate
KIA, Sportage, 5-6 Monate, 6-7 Monate (Hybrid)
Jeep, Compass, 3-5 Monate, 3-5 Monate (Hybrid)
VW, Taigo, 3-6 Monate
Volvo, XC90, 10-12 Monate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:45:28