2011-05-24 33 views
4

喜進出口運行的Python 2.7.1和3.2.0 beautifulsoup如果 我嘗試加載使用BeautifulSoup不能連接海峽和NoneType對象

ifile = open(os.path.join(self.path,str(self.FEED_ID)+'.xml'), 'r') 
file_data = BeautifulStoneSoup(ifile, 
    convertEntities=BeautifulStoneSoup.XHTML_ENTITIES) 

IM一些XML飼料收到以下錯誤

File "C:\dev\Python27\lib\site-packages\BeautifulSoup.py", line 1144, in __ini 
t__ 
    self._feed(isHTML=isHTML) 
    File "C:\dev\Python27\lib\site-packages\BeautifulSoup.py", line 1186, in _feed 

    SGMLParser.feed(self, markup) 
    File "C:\dev\Python27\lib\sgmllib.py", line 103, in feed 
    self.rawdata = self.rawdata + data 
TypeError: cannot concatenate 'str' and 'NoneType' objects 

我儘量到處看,但沒有成功...請告知

+0

「BeautifulSoup不能連接str和NoneType對象」,Guido van Rossum和他都沒有發明python! – mikerobi 2011-05-24 16:19:19

+0

@mikerobi:是的,但他們可以採取措施,以防止它發生...... – nabizan 2011-05-25 13:26:05

回答

0

舉例...

from BeautifulSoup import BeautifulStoneSoup 
xml = "<doc><tag1>Contents 1<tag2>Contents 2<tag1>Contents 3" 
soup = BeautifulStoneSoup(xml) 
print soup.prettify() 
(...) 

from here。我推斷你需要傳遞一個字符串作爲第一個參數,而不是文件對象ifile,嘗試:

file_data = BeautifulStoneSoup(ifile.read(), 
    convertEntities=BeautifulStoneSoup.XHTML_ENTITIES) 
+0

我已經試過這個,但沒有任何作用,它只有當我使用Unicode(ifile.read(),'utf-8',errors ='忽略')而不是ifile ... – nabizan 2011-05-24 13:03:42

+0

它是固定的。不是嗎?你需要的是.read()+ unicode。我對嗎 ? – 2011-05-24 13:10:34

+0

沒有.read()沒有幫助,我必須使用unicore錯誤=忽略...從我的角度來看是錯誤的,我也必須在這種情況下使用編碼utf-8但如果我得到一些其他編碼?它的錯誤問題應該首先解決,而不是解決它 – nabizan 2011-05-24 13:17:37

0

我也有這種錯誤。這對我有效:

from unidecode import unidecode 
file_data = BeautifulSoup(unidecode(ifile.read())) 
相關問題