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

如何用BeautifulSoup抓取维基百科多表格的迪士尼电影及上映日期?

解决方案

修改后的代码

import requests
from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/List_of_Walt_Disney_Pictures_films"
res = requests.get(url).text
soup = BeautifulSoup(res, 'lxml')

# 遍历页面中所有class为wikitable的电影表格
for table in soup.find_all('table', class_='wikitable'):
    # 跳过表头行,遍历表格内的每一行数据
    for row in table.find_all('tr')[1:]:
        columns = row.find_all(['th', 'td'])
        # 跳过列数不足的无效行(比如合并单元格的行)
        if len(columns) < 2:
            continue
        try:
            # 提取电影名称:优先取<i><a>标签文本,兼容无<a>标签的情况
            movie_tag = columns[0].find('i')
            if movie_tag and movie_tag.find('a'):
                movie_name = movie_tag.a.text.strip()
            else:
                movie_name = columns[0].get_text(strip=True)
            # 提取上映日期:取第二列文本并清理格式
            release_date = columns[1].get_text(strip=True)
            # 按照要求的格式对齐输出
            print(f'"{movie_name}"{" "*(40 - len(movie_name))}"{release_date}"')
        except Exception:
            # 跳过处理失败的行,避免程序中断
            continue

修改说明

  1. 覆盖所有表格:把原代码中只找单个表格的soup.find()改成soup.find_all(),这样能遍历页面所有年代分段的电影表格。
  2. 过滤无效行:增加列数检查,跳过合并单元格或内容缺失的行,避免索引错误。
  3. 兼容特殊条目:有些电影没有<a>标签,补充了直接提取单元格文本的逻辑,避免遗漏数据。
  4. 格式对齐处理:通过字符串左对齐调整,让电影名和上映日期的输出保持整齐的两列格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:57:23