RSS Feed 以“\n”开头。我该如何删除它? - Python
RSS Feed has a "\n" at the beginning. How do I remove it? - Python
我正在尝试从此提要中提取数据:
http://realbusiness.co.uk/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”以便解析数据?
如果我的解决方案有误,那么正确的解决方案是什么?
提前致谢。
它可能通过在解析之前读取 \n
字符来工作,如下所示:
html = urlopen(url)
html.read(1)
dom = minidom.parse(html)
我正在尝试从此提要中提取数据:
http://realbusiness.co.uk/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”以便解析数据?
如果我的解决方案有误,那么正确的解决方案是什么?
提前致谢。
它可能通过在解析之前读取 \n
字符来工作,如下所示:
html = urlopen(url)
html.read(1)
dom = minidom.parse(html)