2017-06-28 2 views
0

Ich versuche, Daten aus diesem Feed zu ziehen:RSS-Feed hat ein " n" am Anfang. Wie entferne ich es? - Python

http://realbusiness.co.uk/feed/

Jedoch unterscheidet sie sich von der anderen sieht Feeds Ich ziehe aus. Sie sehen wie folgt aus:

https://www.ft.com/companies?format=rss

Wenn ich Daten ziehen aus „https://www.ft.com/companies?format=rss“ alles ist ziemlich geradlinig, wie ich minidom bin mit der Daten in Scheiben schneiden und ziehen alles, was ich wie so brauchen:

from xml.dom import minidom 
from urllib.request import urlopen 

url = 'https://www.ft.com/companies?format=rss&page=1' 
html = urlopen(url) 
dom = minidom.parse(html) 
item = dom.getElementsByTagName('item') 
for node in item: 
    pubdate = node.getElementsByTagName('pubDate')[0].childNodes[0].nodeValue 
    link = node.getElementsByTagName('link')[0].childNodes[0].nodeValue 
    title = node.getElementsByTagName('title')[0].childNodes[0].nodeValue 

Allerdings, wenn ich versuchen und tun das gleiche für "http://realbusiness.co.uk/feed/" mit dem folgenden Code:

from xml.dom import minidom 
from urllib.request import urlopen 

url = 'http://realbusiness.co.uk/feed/' 
html = urlopen(url) 
dom = minidom.parse(html) 

I erhalten den folgenden Fehler:

Traceback (most recent call last): 
    File "C:/Users/NAME/Desktop/Scripts/scrapesites/deleteme.py", line 6, in <module> 
    dom = minidom.parse(html) 
    File "C:\Python36\lib\xml\dom\minidom.py", line 1958, in parse 
    return expatbuilder.parse(file) 
    File "C:\Python36\lib\xml\dom\expatbuilder.py", line 913, in parse 
    result = builder.parseFile(file) 
    File "C:\Python36\lib\xml\dom\expatbuilder.py", line 207, in parseFile 
    parser.Parse(buffer, 0) 
xml.parsers.expat.ExpatError: XML or text declaration not at start of entity: line 2, column 0 

Meine Schlussfolgerung, warum dies auftritt, ist, weil die rss Struktur der beiden Standorte leicht unterschiedlich sind. 'http://realbusiness.co.uk/feed/' hat ein '\ n' in der ersten Zeile der Seite, während 'https://www.ft.com/companies?format=rss' nicht.

Wie gehe ich zum Löschen der "\ n", damit ich die Daten analysieren kann?

Wenn ich falsch mit meiner Lösung bin, was wäre die richtige Lösung?

Vielen Dank im Voraus.

+1

Ich glaube nicht, dass die richtige Methode ist, um eine Zeichenfolge zu verwenden ... urlopen nicht zurück. –

Antwort

1

Es könnte durch das Lesen der \n Charakter arbeiten, bevor wie so Parsen:

html = urlopen(url) 
html.read(1) 
dom = minidom.parse(html) 
+0

Der Code verwendet 'minidom.parse', die eine Datei wie ein Objekt, keine' Zeichenkette', akzeptiert. Und ja, es stürzt ab, wenn die Datei mit einem Zeilenumbruch, Leerzeichen oder Tab beginnt. – ikkuh

+1

Ich sehe es war schlecht. Ich habe etwas ernsthaft missverstanden. Löschte meine Antwort und kehrte den Downvote um. Entschuldigung für irgendwelche Probleme. Prost. –

Verwandte Themen