我试图从一个网站上解析。我卡住了。我将在下面提供XML。它来自一个网站。我有两个问题。从网站上读取xml的最佳方式是什么,然后我就很难挖掘xml来获得所需的速率。
我需要的数字是基数:OBS_值0.12
到目前为止我所拥有的:
from xml.dom import minidom
import urllib
document = ('http://www.newyorkfed.org/markets/omo/dmm/fftoXML.cfm?type=daily''r')
web = urllib.urlopen(document)
get_web = web.read()
xmldoc = minidom.parseString(document)
ff_dataset = xmldoc.getElementsByTagName('ff:DataSet')[0]
ff_series = ff_DataSet.getElementsByTagName('ff:Series')[0]
for line in ff_series:
price = line.getElementsByTagName('base:OBS_VALUE')[0].firstChild.data
print(price)
来自webiste的XML代码:
-<Header> <ID>FFD</ID>
<Test>false</Test>
<Name xml:lang="en">Federal Funds daily averages</Name> <Prepared>2013-05-08</Prepared>
<Sender id="FRBNY"> <Name xml:lang="en">Federal Reserve Bank of New York</Name>
<Contact>
<Name xml:lang="en">Public Information Web Team</Name> <Email>ny.piwebteam@ny.frb.org</Email>
</Contact>
</Sender>
<!--ReportingBegin></ReportingBegin-->
</Header>
<ff:DataSet> -<ff:Series TIME_FORMAT="P1D" DISCLAIMER="G" FF_METHOD="D" DECIMALS="2" AVAILABILITY="A">
<ffbase:Key>
<base:FREQ>D</base:FREQ>
<base:RATE>FF</base:RATE>
<base:MATURITY>O</base:MATURITY>
<ffbase:FF_SCOPE>D</ffbase:FF_SCOPE>
</ffbase:Key>
<ff:Obs OBS_CONF="F" OBS_STATUS="A">
<base:TIME_PERIOD>2013-05-07</base:TIME_PERIOD>
<base:OBS_VALUE>0.12</base:OBS_VALUE>
如果你想坚持使用xml.dom.minidom,试试这个。。。
但是,如果要使用lxml,请使用underrun的解决方案。另外,原始代码也有一些错误。实际上,您正试图分析document变量,即web地址。您需要解析从网站返回的xml,在您的示例中,这个xml是get web变量。
看看你的代码:
我不确定您是否有正确的文档,除非您想要
http://www.newyorkfed.org/markets/omo/dmm/fftoXML.cfm?type=dailyr
,因为这就是您将得到的(本例中的parens组和列在彼此旁边的字符串自动连接)。在那之后,你做了一些工作来创建get_web,但是你没有在下一行中使用它。相反,您尝试解析您的
document
,这是url。。。除此之外,我完全建议您使用ElementTree,最好是lxml的ElementTree(http://lxml.de/)。此外,lxml的etree解析器接受一个类似文件的对象,该对象可以是urllib对象。如果是的话,在整理完你的其他医生之后,你可以这样做:
相关问题 更多 >
编程相关推荐