如何用text()提取某节点下所有文本内容
时间: 2024-03-13 16:48:20 浏览: 157
提取屏幕上的任何文本
3星 · 编辑精心推荐
使用XPath中的text()函数可以提取某个节点下的所有文本内容。具体来说,可以使用以下XPath表达式:
```
//节点名称/text()
```
其中,节点名称是要提取文本内容的节点的名称,例如div、p、ul等。该表达式会选取所有名称为节点名称的节点下的文本内容,然后将其作为一个列表返回。
例如,假设有如下HTML代码:
```html
<div class="content">
<h1>这是标题</h1>
<p>这是一段文本</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
</ul>
</div>
```
想要提取div节点下的所有文本内容,可以使用以下代码:
```python
from scrapy import Selector
html = """
<div class="content">
<h1>这是标题</h1>
<p>这是一段文本</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
</ul>
</div>
"""
selector = Selector(text=html)
texts = selector.xpath('//div[@class="content"]/text()')
```
此时,texts的值为:
```
['\n ', '\n ', '\n ', '\n ']
```
可以看到,该结果包含了div节点下的所有文本内容,包括空格和换行符等。如果只想提取文本内容,可以使用Python的strip()方法去除文本中的空格和换行符,例如:
```python
texts = [text.strip() for text in texts.extract() if text.strip()]
```
此时,texts的值为:
```
['这是标题', '这是一段文本', '列表项1', '列表项2', '列表项3']
```
可以看到,该结果只包含了文本内容,去除了空格和换行符等。
阅读全文