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

如何使用Beautiful Soup从维基百科爬取汽车品牌列表

维基百科汽车品牌列表爬取优化方案

核心筛选逻辑

原代码抓取全页面<li>标签会混入导航栏、页脚、参考资料等无关内容,目标品牌全部位于页面内class为div-col的多列布局容器下的<ul>/<li>结构中,优先定位该类容器再提取内部<li>即可完成精准筛选。

优化后可直接运行代码

# 导入依赖包
from urllib.request import urlopen
from bs4 import BeautifulSoup

# 请求目标页面
source = urlopen('https://en.wikipedia.org/wiki/List_of_car_brands').read()
soup = BeautifulSoup(source, 'lxml')

# 初始化存储品牌的列表
car_brands = []
# 可选:如果需要存储品牌名+对应维基链接可以用字典
# car_brands_dict = {}

# 先定位所有品牌列表所在的div-col容器
for col_div in soup.find_all("div", class_="div-col"):
    # 提取容器内所有li标签
    for li in col_div.find_all("li"):
        # 部分li为空,过滤掉无<a>标签的无效项
        brand_tag = li.find("a")
        if not brand_tag:
            continue
        # 获取品牌名(取a标签的text属性,避免混入html标签)
        brand_name = brand_tag.get_text(strip=True)
        car_brands.append(brand_name)
        # 字典存储的话追加下面这行
        # car_brands_dict[brand_name] = "https://en.wikipedia.org" + brand_tag.get("href")

# 测试输出前20个品牌验证结果
print(car_brands[:20])
# 打印总抓取品牌数量
print(f"共抓取到{len(car_brands)}个汽车品牌")

补充说明

  • 如果需要过滤已停产的品牌,可以判断li文本中是否包含(defunct)标识,自行决定是否保留
  • 部分地区的子品牌会有缩进层级,本方案会自动抓取所有层级的品牌,无需额外处理
  • 若遇到反爬限制,可以给请求添加User-Agent请求头,改用requests库发送请求即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:07