爬虫中XPath语法四个重要概念及示例
在编写爬虫时,XPath是一种非常重要的技术,它允许你在XML或HTML文档中快速定位和提取数据。XPath包含四个重要的概念:节点(Node),元素(Element),属性(Attribute)和文本(Text)。
- 节点(Node):在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释和根节点。
- 元素(Element):一个元素包含开始标签、结束标签以及位于两者之间的文本。
- 属性(Attribute):属性总是包含值。
- 文本(Text):文本节点总是包含字符数据。它可以是元素或属性的值,或者是元素的直接子节点。
下面是XPath的四个重要概念的示例代码:
- 选取元素:
from lxml import etree
text = """
<div>
<ul>
<li class="item-0">first item</li>
<li class="item-1"><a>second item</a></li>
<li class="item-inactive">third item</li>
<li class="item-1"><a class="item-1">fourth item</a></li>
</ul>
</div>
"""
html = etree.HTML(text)
# 选取所有的li元素
items = html.xpath('//li')
print(items)
- 选取属性:
from lxml import etree
text = """
<div>
<ul>
<li class="item-0">first item</li>
<li class="item-1"><a>second item</a></li>
<li class="item-inactive">third item</li>
<li class="item-1"><a class="item-1">fourth item</a></li>
</ul>
</div>
"""
html = etree.HTML(text)
# 选取所有li元素的class属性
classes = html.xpath('//li/@class')
print(classes)
- 选取文本:
from lxml import etree
text = """
<div>
<ul>
<li class="item-0">first item</li>
<li class="item-1"><a>second item</a></li>
<li class="item-inactive">third item</li>
<li class="item-1"><a class="item-1">fourth item</a></li>
</ul>
</div>
"""
html = etree.HTML(text)
# 选取所有li元素的文本
texts = html.xpath('//li/text()')
print(texts)
- 选取多种元素:
from lxml import etree
text = """
<div>
<ul>
<li class="item-0">first item</li>
<li class="item-1"><a>second item</a></li>
<li class="item-inactive">third item</li>
<li class="item-1"><a class="item-1">fourth item</a></li>
</ul>
</div>
"""
html = etree.HTML(text)
# 选取所有li元素的文本和a元素的文本
results = html.xpath('//li/text() | //a/text()')
print(results)
以上代码展示了如何使用XPath选取HTML文档中的元素、属性、文本以及如何选取多种类型的节点。在实际爬虫项目中,可以根据需要编写相应的XPath表达式来提取所需的数据。
评论已关闭