python美化组类型错误:序列项0:应为字符串,找到标记

2024-05-13 17:49:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用beautifulsoup从html字符串中提取图像和链接。这一切都工作得很好,但是有些链接在链接内容中有一个标记,它会抛出一个错误。

示例链接:

<a href="http://www.example.com"><strong>Link Text</strong></a>

Python代码:

soup = BeautifulSoup(contents)
links = soup.findAll('a')
for link in links:
    print link.contents # generates error
    print str(link.contents) # outputs [Link Text]

错误消息:

TypeError: sequence item 0: expected string, Tag found

我真的不想在链接文本中循环任何子标记,我只想返回原始内容,这对BS是可能的吗?


Tags: 字符串text标记内容链接html错误contents
1条回答
网友
1楼 · 发布于 2024-05-13 17:49:37

要仅获取标记的文本内容,^{} method允许您从当前元素(包括标记)中获取(剥离)文本:

print link.get_text(' ', strip=True)

第一个参数用于连接所有文本元素,而将strip放置到True则意味着所有文本元素都将首先去掉前导和尾随空白。在大多数情况下,这会为您提供整洁的处理文本。

您还可以使用^{} iterable

print u' '.join(link.stripped_strings)

这基本上是相同的效果,但是您可以选择先处理或过滤剥离的字符串。

要获取内容,请对每个子项使用str()unicode()

print u''.join(unicode(item) for item in link)

这对包含的ElementNavigableString项都有效。

相关问题 更多 >