2017-07-03 3 views
0

Ich habe einen der folgenden Web-Service: ‚https://news.google.com/news/rss/?ned=us&hl=enWie eine XML-Datei analysieren und seine Daten Python erhalten

Ich brauche es zu analysieren und den Titel und die Datumswerte der einzelnen Elemente in der XML-Datei zu erhalten.

Ich habe versucht, die Daten in eine XML-Datei zu erhalten und ich versuche, es zu analysieren, aber ich sehe alle Leerwerte:

import requests 
import xml.etree.ElementTree as ET 

response = requests.get('https://news.google.com/news/rss/?ned=us&hl=en') 
with open('text.xml','w') as xmlfile: 
    xmlfile.write(response.text) 

with open('text.xml','rt') as f: 
    tree = ET.parse(f) 

for node in tree.iter(): 
    print (node.tag, node.attrib) 

Ich bin nicht sicher, wo ich falsch gehe. Ich muss irgendwie die Werte von Titel und veröffentlichtem Datum jedes einzelnen Elements in der XML extrahieren.

Vielen Dank für alle Antworten im Voraus.

+0

https://stackoverflow.com/questions/2244836/rss-feed-parser-library-in-python, mit dem nur '[(e.title, e.published) für e in feedparser.parse (Antwort. Text) .Einträge] '. –

+0

habe ich deine Frage beantwortet? – mquantin

+0

Ja hast du ... vielen Dank lija! –

Antwort

0

@Ilja Everilä hat Recht, Sie sollten Feedparser verwenden. Sicher gibt es keine Notwendigkeit, irgendeine XML-Datei zu schreiben ... außer, wenn Sie es archivieren möchten.

ich nicht wirklich bekommen, was Ausgabe, die Sie erwartet, aber so etwas wie dies funktioniert (python3)

import feedparser 

url = 'https://news.google.com/news/rss/?ned=us&hl=en' 
d = feedparser.parse(url) 
#print the feed title 
print(d['feed']['title']) 
#print tuples (title, tag) 
print([(d['entries'][i]['title'], d['entries'][i]['tags'][0]['term']) for i in range(len(d['entries']))]) 

explizit zu drucken, wie UTF-8-Zeichenfolgen verwenden:

print([(d['entries'][i]['title'].encode('utf8'), d['entries'][i]['tags'][0]['term'].encode('utf8')) for i in range(len(d['entries']))]) 

Vielleicht, wenn Sie zeigen Sie Ihre erwartete Ausgabe, könnten wir Ihnen helfen, den richtigen Inhalt aus dem Parser zu bekommen.

+0

Ich bekomme hier ein merkwürdiges Problem: –

+0

Traceback (letzter Anruf zuletzt): Datei "Hacker.py", Zeile 8, in drucken ((d ['entries'] [i] [ 'title'], d ['entries'] [i] ['published'])) Datei "C: \ Benutzer \ bhatsubh \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ encodings \ c p437.py “, Zeile 19, in encode return codecs.charmap_encode (Eingang, self.errors, encoding_map) [0] UnicodeEncodeError: 'charmap' codec Zeichen nicht kodieren, können '\ u2014' in Position 50: Zeichentabellen zu

+0

Irgendeine Idee, warum das kommt ??? –

Verwandte Themen