requests.get()表现不正常?

时间:2017-06-05 19:00:52

标签: python xml rss

我一直在使用python编写XML解析器,我将新闻网站的RSS源作为输入。我实现了一个loadRSS()函数,我在特定feed的url上使用了requests.get()。我的代码

def loadRSS(src,filename):

resp = requests.get(src)

#print resp.content
with open(filename, 'wb') as f:
    f.write(resp.content)

现在我根据不同的新闻部分有各种子目录,每个部分都有自己独立的RSS提要网址,因此有像体育,科学等文件夹,每个文件夹都有一个source.txt文件,其中有相应的网址。 RSS订阅。我正在使用os.walk()遍历每个文件

    for root, sub, f in os.walk(rootdirectory):
    for f1 in f:
        if f1=='source.txt':
            src=""
            with open(os.path.join(root,f1),'r') as f2:
                src=f2.readline()

            loadRSS(src,os.path.join(root,"topnewsfeed.xml"))
            newsitems = parseXML(os.path.join(root,"topnewsfeed.xml"))
            savetoCSV(newsitems,os.path.join(root,"topnews.csv"))

当我运行脚本时出现错误

xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 22, column 311

所以我决定检查由loadRSS()函数形成的xml文件。令我惊讶的是,正在为不同的RSS源提取不同类型的数据(即使我使用相同的逻辑将数据放在xml文件中)。例如,对于与'Hindustan Times'的topnews / rssfeed.xml相对应的RSS提要(抱歉无法发布所有链接,因为我没有足够的信誉),xml文件根据页面源完美地形成。但对于另一个RSS链接http://timesofindia.indiatimes.com/rssfeeds/1081479906.cms,我得到了一个不稳定的xml file on my system

不符合该RSS页面的xml。我已经尝试了很难调试它,但仍然不知道可能导致它的原因以及如何纠正它,这是一个很大的刺激原因。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

不稳定的XML文件显然是一个HTML文件,它永远不应该是有效的XML。询问网站的维护者为什么你在这里收到的东西不同于预期的XML ...这超出了SO的范围,XML解析器的行为是正确的。