RSS Feed一开始就有一个“\ n”。我该如何删除它? - Python

时间:2017-06-28 12:03:35

标签: python xml rss

我正在尝试从此Feed中提取数据:

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

然而,它看起来与我正在提取的其他Feed不同。它们看起来像这样:

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

当我从“https://www.ft.com/companies?format=rss”中提取数据时,一切都非常简单,因为我正在使用minidom切片数据并拉出我需要的所有内容,如下所示:

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

但是,当我尝试使用以下代码对“http://realbusiness.co.uk/feed/”执行相同的操作时:

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

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

我收到以下错误:

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

关于为什么会发生这种情况的结论是因为两个站点的rss结构略有不同。 “http://realbusiness.co.uk/feed/”在页面的第一行有一个“\ n”,而“https://www.ft.com/companies?format=rss”没有。

如何删除“\ n”以便我可以解析数据?

如果我对我的解决方案有误,那么正确的解决方案是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

在解析之前阅读\n字符可能会有效:

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