【发布时间】:2021-12-27 09:19:34
【问题描述】:
我正在使用 BeautifulSoup 处理 XML 提要,但由于某种原因它跳过了部分参数标记。我已经尝试更改解析器(html.parser / html5lib / lxml),但都有相同的输出。
有人可以帮忙吗?
原始 XML 文件:
<SHOPITEM>
<PRODUCTNO>DK28-SLV</PRODUCTNO>
<PARAM>
<PARAM_NAME>Způsob komunikace</PARAM_NAME>
<VAL>WiFi pro internetové připojení</VAL>
</PARAM>
</SHOPITEM>
BeautifulSoup 的输出:
<shopitem>
<productno>DK28-SLV</productno>
<param_name>Způsob komunikace</param_name>
<val>WiFi pro internetové připojení</val>
<param/>
</shopitem>
期望的输出:
<shopitem>
<productno>DK28-SLV</productno>
<param> -------> This one is missing
<param_name>Způsob komunikace</param_name>
<val>WiFi pro internetové připojení</val>
<param/>
</shopitem>
我的代码:
from bs4 import BeautifulSoup
import requests
source = requests.get("my-xml-feed-url").text
soup = BeautifulSoup(source, "lxml")
product = soup.find("shopitem")
for product in soup.find_all("shopitem"):
productno = product.find("productno")
print(productno)
param = product.find("param")
print(param)
param_name = product.find("param_name")
print(param_name)
param_val = product.find("val")
print(param_val)
更新: 经过测试将解析器更改为“xml”。
它有部分帮助,并且标签现在可以正确显示。但是 XML 文件现在在不同的地方损坏了。 似乎从大约。 1/2 的 XML 是可以的,但是前 1/2 的 XML 没有显示出来..
原始 XML:
<PARAM>
<PARAM_NAME>Funkce alarmu</PARAM_NAME>
<VAL>Ano, do mobilní aplikace</VAL>
</PARAM>
输出开始:
/PARAM_NAME>
<VAL>Ano, do mobilní aplikace</VAL>
</PARAM>
这是输出开始的地方。所以由于某种原因,这部分之前的 XML 部分被切断了。 在这一点之前和之后,XML 结构似乎没有什么不同。所以我认为没有理由这样做。
进一步输出就OK了:
<PARAM>
<PARAM_NAME>
Úhel záběru
</PARAM_NAME>
<VAL>
60°
</VAL>
</PARAM>
【问题讨论】:
标签: python parsing beautifulsoup lxml