2024-10-01 13:42:15 发布
网友
假设我的html如下所示:
<td>Potato1 <span somestuff...>Potato2</span></td> ... <td>Potato9 <span somestuff...>Potato10</span></td>
我让Beautulsoup来做这个:
我得到了
Potato1 Potato2 .... Potato9 Potato10
是否可以只获取标记内的文本而不是span标记中嵌套的任何文本?在
另一个方法,与tag.contents[0]不同,它保证文本是 NavigableString而不是子Tag内的文本是:
tag.contents[0]
NavigableString
Tag
[child for tag in soup.find_all("td") for child in tag if isinstance(child, bs.NavigableString)]
以下是一个突出差异的示例:
或者,对于lxml,可以使用XPath td/text():
td/text()
import lxml.html as LH content = ''' <td>Potato1 <span>Potato2</span></td> <td><span>FOO</span></td> <td><span>Potato10</span>Potato9</td> ''' root = LH.fromstring(content) print(root.xpath('td/text()'))
收益率
['Potato1 ', 'Potato9']
您可以使用^{}作为
>>> for tag in soup.find_all("td"): ... print tag.contents[0] ... Potato1 Potato9
它的作用是什么?
标记子级可以使用.contents作为列表使用。在
.contents
因为我们只对第一个元素感兴趣,所以我们
print tag.contents[0]
另一个方法,与
tag.contents[0]
不同,它保证文本是NavigableString
而不是子Tag
内的文本是:以下是一个突出差异的示例:
^{pr2}$或者,对于lxml,可以使用XPath
td/text()
:收益率
您可以使用^{} 作为
它的作用是什么?
标记子级可以使用
^{pr2}$.contents
作为列表使用。在因为我们只对第一个元素感兴趣,所以我们
相关问题 更多 >
编程相关推荐