BeautifulSoup无法连接str和NoneType对象

4 投票
2 回答
2128 浏览
提问于 2025-04-16 18:14

你好,我正在使用 Python 2.7.1 和 BeautifulSoup 3.2.0。

如果我尝试加载一些 XML 数据时,

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

我遇到了以下错误:

  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

我到处找了找,但没有找到解决办法……请给点建议。

2 个回答

0

我也遇到过这个错误。这个方法对我有效:

from unidecode import unidecode
file_data = BeautifulSoup(unidecode(ifile.read()))
0

根据这个例子 ...

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

来自 这里。我推测你需要把一个字符串作为第一个参数,而不是文件对象 ifile,可以试试:

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

撰写回答