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

使用BeautifulSoup的Python函数含if-else却无返回值问题排查

问题分析与解决方案

核心问题

你提到执行时print能得到结果,但函数返回值“为空”,本质是调用函数时没有接收或打印返回值——你的函数最后确实有return a,但直接写transp_url('https://www.vivaqua.be/fr/')不会自动输出返回值,需要用print(transp_url('...'))或者赋值给变量查看。

另外你的代码还有几个可优化的地方:

  • 没必要用global a,局部变量即可完成逻辑
  • 大小写匹配可以通过正则的IGNORECASE参数简化,不用重复写两次不同大小写的匹配
  • 找到的href可能是相对路径,建议转成绝对URL,避免后续使用出错

优化后的代码

from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
from urllib.parse import urljoin
import re
import ssl

def transp_url(url):
    # 请求头,避免403错误
    hdr = {
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
        'Accept-Encoding': 'none',
        'Accept-Language': 'en-US,en;q=0.8',
        'Connection': 'keep-alive'
    }

    # 忽略SSL证书错误
    ssl._create_default_https_context = ssl._create_unverified_context

    req = Request(url, headers=hdr)
    html_page = urlopen(req)
    soup = BeautifulSoup(html_page, "lxml")

    # 1. 查找href包含transpar的链接(兼容大小写)
    link = soup.select_one("a[href*=transpar], a[href*=Transpar]")
    if link:
        # 转成绝对URL
        return urljoin(url, link['href'])
    
    # 2. 查找锚点文本包含transpar的链接(忽略大小写)
    link_text = soup.find("a", string=re.compile("transpar", flags=re.IGNORECASE))
    if link_text:
        return urljoin(url, link_text['href'])
    
    # 3. 都没找到返回指定提示
    return "No Transparency page"

# 调用并打印返回值
result = transp_url('https://www.vivaqua.be/fr/')
print(result)

关键优化点说明

  1. 移除全局变量:用局部变量存储结果,避免全局变量带来的意外问题
  2. 简化大小写匹配:
    • CSS选择器通过a[href*=transpar], a[href*=Transpar]覆盖大小写场景
    • 文本匹配用re.compile("transpar", flags=re.IGNORECASE)直接忽略大小写,无需重复编写正则
  3. 相对路径转绝对路径:用urljoin(url, link['href'])把页面内的相对链接转换为完整URL,后续使用更便捷
  4. 明确接收返回值:调用函数后用变量接收并打印,即可看到实际返回结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:29