0

いくつかの YouTube フィードを集約して連結し、フィードを解析しようとしています。個々のフィードを自分で解析すると、問題はなく、コードは機能しているようです。しかし、フィードを 1 つの長い文字列として集約してから etree.fromstring(aggregate_partner_feed) を使用しようとすると、エラーが発生します。私が得るエラーは ParseError: unbound プレフィックスであり、etree 行 (前に参照) がエラーとして示されます。これを修正する方法について何かアドバイスはありますか?

aggregated_partners_list = [cnn, teamcoco, buzzfeed]


i = 1 
number_of_partners = len(aggregated_partners_list)
aggregate_partner_feed = '' 

for entry in aggregated_partners_list:
    #YOUTUBE FEED
    #download the file:
    file = urllib2.urlopen('http://gdata.youtube.com/feeds/api/users/'+entry+'/uploads?v=2&max-results=50')
    #convert to string:
    data = file.read()
    #close file because we dont need it anymore:
    file.close()

    if i == 1:
        #remove ending </feed>
        data = data[:-7]

    if i>1 and i != number_of_partners:
        data = data[data.find('<entry'):]
        data = data[:-7]
        #remove everything before first <entry> in the new feed and the last </entry>

    #if last, then only remove everything before first <entry>
    if i == number_of_partners:
        data = data[data.find('<entry'):]

    #append the current feed to the existing feed
    aggregate_partner_feed += data

    #increment the counter  
    i=i+1

print isinstance(data, basestring)                      #returns true
print isinstance(aggregate_partner_feed, basestring)    #returns true

#apply the parsing to the aggregated feed

#entire feed
root = etree.fromstring(aggregate_partner_feed)     #this is the line that give an error
#all entries
entries = root.findall('{http://www.w3.org/2005/Atom}entry')
#more code that seems to work...
4

1 に答える 1

0

各フィードを個別に解析し、文字列を連結して解析する代わりに .append を使用しました。

于 2012-11-01T05:03:32.227 に答える