需要字符串或缓冲区:filter html标记



尽管我看到了类似的问题,但似乎还是弄不清错误。有人能帮我指出吗?

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(...),尽管值的顺序可能与源中的不同。

最新更新