Python XML parsing de site web
Je suis en train de les Analyser à partir d'un site web. Je suis coincé. Je vais donner le code XML ci-dessous. Il est à venir à partir d'un site de vente. J'ai deux questions. Quelle est la meilleure façon de lire les données xml à partir d'un site web, et puis j'ai de la difficulté de creuser dans le xml pour obtenir le taux que j'ai besoin.
La figure j'ai besoin de revenir de Base:OBS_VALUE 0.12
Ce que j'ai à ce jour:
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)
Code XML du site:
-<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>[email protected]</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>
OriginalL'auteur Trying_hard | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Si vous voulais rester avec xml.dom.minidom, essayez ceci...
Cependant, si vous souhaitez utiliser lxml, l'utilisation d'underrun de la solution. Aussi, votre code d'origine avait quelques erreurs. Vous étiez en fait de tenter d'analyser la variable de document, qui a été l'adresse web. Vous avez besoin d'analyser le document xml renvoyé à partir du site web, dans votre exemple, le get_web variable.
Les informations ajoutées est apprécié
Pourquoi avez-vous changé url_str à xml_str? Devrait être: xml_str = urllib.urlopen(url_str).lire()
OriginalL'auteur b10hazard
Prendre un coup d'oeil à ton code:
Je ne suis pas sûr que vous avez le document correct, sauf si vous voulez
http://www.newyorkfed.org/markets/omo/dmm/fftoXML.cfm?type=dailyr
parce que c'est ce que vous obtenez (les parens de groupe dans ce cas et les chaînes de caractères listés les uns à côté des autres automatiquement concaténer).Après que vous faire un peu de travail pour créer get_web mais alors vous ne l'utilisez pas dans la ligne suivante. Au lieu de cela, vous essayez d'analyser votre
document
qui est de l'url...Au-delà de cela, je me serais totalement vous suggérons d'utiliser ElementTree, de préférence lxml de ElementTree (http://lxml.de/). Aussi, lxml du programme etree analyseur prend un fichier-comme l'objet qui peut être un urllib objet. Si vous n'avez, à la suite du redressement le reste de ton doc, vous pourriez faire ceci:
OriginalL'auteur underrun