尽管我看到了类似的问题,但似乎还是弄不清错误。有人能帮我指出吗?
Negative.match(parent['class'](处出错。我知道我需要从元组类型更改为字符串,但在哪里?
Traceback error:
Traceback (most recent call last):
File "text2blog.py", line 197, in <module>
print upgradeFeed(HN_RSS_FEED)
File "text2blog.py", line 167, in upgradeFeed
upgradedLinks.append((entry, upgradeLink(entry.link)))
File "text2blog.py", line 147, in upgradeLink
content = grabContent(link, html)
File "text2blog.py", line 48, in grabContent
if (NEGATIVE.match(parent['class'])):
TypeError: expected string or buffer
代码:
for s in soup.findAll('script'):
s.extract()
allParagraphs = soup.findAll('p')
topParent = None
parents = []
for paragraph in allParagraphs:
parent = paragraph.parent
if parent not in parents:
parents.append(parent)
parent.score = 0
if parent.has_key('class'):
if NEGATIVE.match(parent['class']):
parent.score -= 50
if POSITIVE.match(parent['class']):
parent.score += 25
if parent.has_key('id'):
if NEGATIVE.match(parent['id']):
parent.score -= 50
if POSITIVE.match(parent['id']):
parent.score += 25
if parent.score == None:
parent.score = 0
请参阅多值属性。
对parent['class']
的调用在我的机器上返回一个列表。对.match(...)
的调用需要一个字符串或缓冲区。
因此,您可能希望将' '.join(parent['class'])
传递给.match(...)
,尽管值的顺序可能与源中的不同。