2012-11-01 41 views
0

我想彙總一些youtube提要,連接它們,然後解析提要。 當我自己解析單獨的feed時,我沒有任何問題,代碼似乎工作。但是,當我嘗試將提要聚合爲一個長字符串,然後使用etree.fromstring(aggregate_partner_feed)時,出現錯誤。我得到的錯誤是ParseError:未綁定的前綴和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... 
+0

您能否顯示'aggregate_partner_feed'的值? –

+1

您可以使用etree單獨解析每個feed並將解析的條目附加到組合樹對象,而不是手動將xml作爲字符串操作 – jfs

+0

@ J.F.Sebastian如何將解析的條目附加到組合樹對象? – sharataka

回答

0

我解析每個單獨供給,然後用於.append代替串聯串在一起,然後解析。

相關問題