带SDMX的Python BS4
我想检索SDMX文件中给出的数据(如)。我试图使用BeautifulSoup,但它似乎看不到标签。在下面的代码中带SDMX的Python BS4,python,python-2.7,xml-parsing,bs4,sdmx,Python,Python 2.7,Xml Parsing,Bs4,Sdmx,我想检索SDMX文件中给出的数据(如)。我试图使用BeautifulSoup,但它似乎看不到标签。在下面的代码中 import urllib2 from bs4 import BeautifulSoup url = "https://www.bundesbank.de/cae/servlet/StatisticDownload?tsId=BBK01.ST0304&its_fileFormat=sdmx" html_source = urllib2.urlopen(url).read()
import urllib2
from bs4 import BeautifulSoup
url = "https://www.bundesbank.de/cae/servlet/StatisticDownload?tsId=BBK01.ST0304&its_fileFormat=sdmx"
html_source = urllib2.urlopen(url).read()
soup = BeautifulSoup(html_source, 'lxml')
ts_series = soup.findAll("bbk:Series")
这给了我一个空的物体
BS4是错误的工具,还是(更有可能)我做错了什么?
提前感谢您。findAll(“bbk:series”)将返回结果
事实上,在这种情况下,即使您使用lxml
作为解析器,BeautifulSoup仍然将其解析为html,因为html标记是不区分大小写的,BeautifulSoup将所有标记都分解,因此soup.findAll(“bbk:series”)
工作。见官方文件
如果要将其解析为xml
,请改用soup=BeautifulSoup(html\u source,'xml')
。它还使用lxml
,因为lxml
是唯一的xml
解析器。现在您可以使用ts_series=soup.findAll(“series”)
获得结果,因为beautifulSoup将剥离命名空间部分bbk
soup.findAll(“bbk:series”)
将返回结果
事实上,在这种情况下,即使您使用lxml
作为解析器,BeautifulSoup仍然将其解析为html,因为html标记是不区分大小写的,BeautifulSoup将所有标记都分解,因此soup.findAll(“bbk:series”)
工作。见官方文件
如果要将其解析为
xml
,请改用soup=BeautifulSoup(html\u source,'xml')
。它还使用lxml
,因为lxml
是唯一的xml
解析器。现在您可以使用ts_series=soup.findAll(“series”)
获得结果,因为beautifulSoup将剥离命名空间部分bbk
提供的url显示“无法处理您的请求!”,也许只要粘贴一些xml片段就可以了。我不知道如何在这里正确格式化。很抱歉,你说得对,但是url在python中是可读的,至少在我的系统中,SDMX xml格式有特定的库。提供的url显示“无法处理您的请求!”,也许只要粘贴一些xml片段就可以了。我不知道如何在这里正确格式化。对不起,你说得对,但是url在python中是可读的,至少在我的系统中,SDMX xml格式有特定的库。非常感谢你。你在两个小时无用的测试后救了我一天:)哦,天啊。非常感谢你。在2小时无用的测试后,你救了我一天:)