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

如何创建向Beautiful Soup传入内容的函数?遇报错或无法输出文本

解决你的Beautiful Soup函数问题

嘿,我看你当前的代码有几个关键问题导致没法实现你想要的功能:

  • 你定义了参数cont但完全没用到,等于摆设;
  • URL被硬编码死了,没法灵活指定其他页面或者传入自定义内容;
  • 另外,创建BeautifulSoup对象时最好指定解析器(比如html.parser),不然会弹出警告。

下面给你两种实用的改进方案,根据你的需求选就行:

方案1:传入URL,提取页面文本

这个版本可以让你传入任意URL,自动爬取并提取页面纯文本:

from bs4 import BeautifulSoup
import urllib.request

def get_page_text(url):
    try:
        # 打开目标URL并获取页面内容
        content = urllib.request.urlopen(url)
        # 初始化BeautifulSoup,指定解析器避免警告
        soup = BeautifulSoup(content, 'html.parser')
        # 返回处理后的纯文本(strip=True去除多余空白)
        return soup.get_text(strip=True)
    except Exception as e:
        # 捕获网络或解析异常,避免程序崩溃
        print(f"处理出错: {e}")
        return None

# 使用示例:传入机器学习维基百科的URL
ml_url = "https://en.wikipedia.org/wiki/Machine_learning"
page_text = get_page_text(ml_url)
if page_text:
    print(page_text)

方案2:直接传入HTML内容,提取文本

如果你的场景是已经拿到了HTML内容(比如从其他渠道获取的),可以用这个函数直接把内容传给BeautifulSoup:

from bs4 import BeautifulSoup

def extract_html_text(html_content):
    # 直接传入HTML内容给BeautifulSoup
    soup = BeautifulSoup(html_content, 'html.parser')
    # 返回纯文本
    return soup.get_text(strip=True)

# 使用示例:传入一段测试HTML
test_html = """<html>
<head><title>测试页面</title></head>
<body>
<h1>Hello Beautiful Soup</h1>
<p>这是一段用于测试的文本内容</p>
</body>
</html>"""
print(extract_html_text(test_html))

这两个方案都解决了你原代码的问题:

  • 真正用到了传入的参数,实现了灵活传入内容/URL的需求;
  • 加入了异常处理,让函数更健壮;
  • 指定了解析器,符合最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:10:17