好的,我来回答我的第一个问题。 我正在尝试解析一个带有BeautifulSoup的网站的一些内容。我想抓取的内容是td标签;但有时是两行,有时不是(包括代码中的换行符)
斗牛犬示例:
有时<td class="searchResultsDogBreed">Bulldog</td>
其他时间<td class="searchResultsDogBreed">Bulldog<br/>French</td>
”
当我使用以下内容列出狗的品种时:
for db in soup.body.find_all('td', class_="searchResultsDogBreed"):
list_dogbreed.append(db.text.strip())
它会像预期的那样将一些结果显示为BulldogFrench,因为它会去掉所有空格。我想忽略法语,只使用Bulldog,因为我只关心它是否是Bulldog,或者至少列出它,以便输出为“Bulldog French”,这样我就可以将这两个单词分开
我必须以某种方式剥离空间,因为没有strip()的实际输出类似于
" BulldogFrench "
谢谢你的帮助
BeautifulSoup
有一个特殊的函数get_text()
,它有选项separator
将文本与不同的子级分开。默认情况下,它使用空字符串作为分隔符,因此您可以得到BulldogFrench
,但您可以使用空格作为分隔符。如果您想保留带有空格的字符串,那么可以使用一些独特的字符,如|
来在以后使用split("|")
结果:
顺便说一句:
get_text()
还有一个选项strip=True
在将元素连接到一个字符串之前删除空格-当元素之间有许多空格时,它会很有用您还可以使用
.children
创建包含所有子元素的列表,并仅获取第一个元素结果:
顺便说一句:仅获取文本元素
结果:
编辑:代替
list(item.children)
您可以尝试您也可以尝试
item.next
,但如果当前td
为空,它可能会得到下一个td
(或\n
)结果:
相关问题 更多 >
编程相关推荐