一文掌握Python爬虫XPath语法攻略
什么是XPath
XPath是一种用于在XML和HTML文档中进行导航和查找信息的语言。XPath的语法相对简洁明了,可以将多个条件组合起来进行查询,是爬虫中常用的解析技术之一。
XPath语法结构
XPath通过路径表达式来选取XML或HTML文档中的节点或元素。
选取节点
在XPath中,节点可以通过路径表达式进行选择。路径表达式的格式为: /或//标签名。
- /:表示从根节点开始查找。
- //:会在整个文档中查找。
选取属性
XPath也可以选取XML或HTML文档中的属性。属性可以通过“@”符号进行选取,例如: //@class。
选取元素
XPath也可以选取元素。选取元素时,可以根据元素的特征、属性以及层级关系进行选取。
常见的选取元素方式:
根据元素名选取
//标签名
根据元素属性选取
//标签名[@属性名="属性值"]
示例1:
假设我们要从一个博客网站上爬取与“Python”相关的文章,我们可以使用XPath来提取相关信息:
import requests
from lxml import etree
url = "https://www.python.org/blogs/"
response = requests.get(url)
html = response.text
tree = etree.HTML(html)
articles = tree.xpath('//div[@class="list-block"]/ul/li/a/text()')
for article in articles:
print(article)
在上面的代码中,我们首先通过requests库和lxml库对网页进行请求和解析,然后通过XPath选择器选取了文章标题,并通过for循环将文章逐一输出。
选取父节点、子节点和兄弟节点
XPath也可以选取父节点、子节点和兄弟节点。
常见的选取父节点方式:
/../
常见的选取子节点方式:
/子节点
常见的选取兄弟节点方式:
/同级节点
示例2:
现在我们来解析一个包含嵌套标签的HTML文档:
<div class="container">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
</div>
我们可以使用XPath来选取li标签:
import requests
from lxml import etree
url = "https://www.example.com"
response = requests.get(url)
html = response.text
tree = etree.HTML(html)
li_tags = tree.xpath('//ul/li')
for li_tag in li_tags:
print(li_tag.xpath('./a/text()')[0])
在上面的代码中,我们首先通过requests库和lxml库对网页进行请求和解析,然后通过XPath选择器选取了li标签元素,并通过for循环和xpath子选择器将li标签下的a标签文本内容逐一输出。
总结
XPath是一种在爬虫中常用的解析技术,通过XPath选择器可以对HTML和XML文档中的节点、属性、元素进行精确选取。使用XPath选择器可以大大提高爬虫程序的解析效率和准确性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文掌握Python爬虫XPath语法 - Python技术站