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

使用BeautifulSoup与Requests提取XML页面数据无法打印结果问题

解决XML页面抓取无输出的问题

我来帮你排查下代码里的问题,导致没输出的原因主要有这几点,咱们逐个解决:

1. 变量名笔误

你用soup.find_all("x")把结果存到了steamID变量,但最后打印的是y——这个不存在的变量当然不会有输出,得改成打印steamID或者遍历它的内容。

2. 错误的解析器选择

BeautifulSoup的html.parser是专门处理HTML的,用它解析XML会因为规则不匹配导致标签识别失败。你应该使用XML专用的解析器,比如lxml-xml(需要先安装lxml库)。

3. 潜在的URL问题

代码里的url = "website.com?xml=1"缺少了http://或https://前缀,正常情况下requests会直接报错,但你说程序没报错,估计实际使用的是完整URL,不过还是要确认URL能正常返回XML内容。

4. 目标标签是否存在

要确认返回的XML里确实包含<x>标签,如果标签名写错了,find_all会返回空列表,自然没输出。可以先打印result.text看看原始XML内容,核对标签名。


修正后的完整代码

import time
import requests
from bs4 import BeautifulSoup

# 补全完整URL前缀
url = "https://website.com?xml=1"
result = requests.get(url)

# 先确认请求是否成功
if result.status_code == 200:
    content = result.content
    # 使用lxml-xml解析XML
    soup = BeautifulSoup(content, "lxml-xml")
    # 查找所有<x>标签,替换成你实际要找的标签名
    steamID_list = soup.find_all("x")
    
    print(f"共找到 {len(steamID_list)} 条结果:")
    for item in steamID_list:
        # 打印标签内的文本,若要获取属性可使用 item.get("属性名")
        print(item.text.strip())
else:
    print(f"请求失败,状态码:{result.status_code}")

额外注意事项

  • 先安装lxml库:执行pip install lxml,如果不想安装第三方库,也可以尝试"xml"解析器,但lxml的XML处理能力更强。
  • 如果XML带有命名空间(比如<ns:x>),需要在标签名前加上命名空间,例如soup.find_all("{http://your-namespace-url}x")。
  • 可以先打印result.text查看返回的原始内容,确认XML结构和标签是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:23