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

如何将多页面的BeautifulSoup结果合并为单个soup变量?

合并多页面BeautifulSoup内容的解决方案

你当前的代码每次循环都会重新给soup_a赋值,自然最后只剩最后一页的解析结果。下面给你两种可行的解决思路:

思路1:用列表存储所有页面的Soup对象

如果需要保留每个页面的独立结构,后续可以逐个处理,直接把每个页面的soup对象存入列表即可:

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
soups_list = []

for i in range(1,6):
    url_a = f'https://www.mascotdb.com/native-american-high-school?page={i}'
    resp_a = requests.get(url_a, headers=headers)
    soup_a = BeautifulSoup(resp_a.content, "html.parser")
    soups_list.append(soup_a)

# 后续处理时遍历列表里的每个soup
for soup in soups_list:
    # 示例:提取页面中的目标元素
    mascot_items = soup.find_all("div", class_="mascot-item")
    # 对提取到的内容做进一步处理

思路2:创建一个合并后的Soup对象

如果希望像操作单个页面一样处理所有5个页面的内容,可以新建一个空的Soup容器,把每个页面的内容合并进去:

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
# 初始化一个空的HTML结构作为容器
combined_soup = BeautifulSoup("<html><body></body></html>", "html.parser")
target_body = combined_soup.body

for i in range(1,6):
    url_a = f'https://www.mascotdb.com/native-american-high-school?page={i}'
    resp_a = requests.get(url_a, headers=headers)
    soup_a = BeautifulSoup(resp_a.content, "html.parser")
    # 把当前页面body下的所有元素追加到合并容器的body中
    for element in soup_a.body.contents:
        target_body.append(element)

# 现在combined_soup就包含了所有页面的内容,直接操作它即可
all_mascots = combined_soup.find_all("div", class_="mascot-item")

两种思路按需选择:如果需要区分不同页面的数据,用列表存储更灵活;如果只是需要批量提取所有页面的相同类型元素,合并成单个soup更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:08:14