一、xpath在爬虫中的应用
1、/div 表示从根节点开始选取div节点
2、/span 表示从根节点开始选取span节点
3、//a 表示选取文档中所有a节点而不考虑其位置
4、@class 表示选取名为class的属性
5、 . 表示选取当前节点
6、 .. 表示选取当前节点的父节点
7、/div/a 表示从根节点开始选取div节点下的a节点
8、 /div/a[2]/img 表示从根节点开始选取div节点下的第二个a节点下的img节点
9、//div[@class='header-wrapper' 表示选取所有属性class的值为header-warpper的div节点
10、//* 表示选取文档中所有元素
11、//@* 表示选取文档中所有带属性的元素
12、/div/p/text() 表示选取p节点的文本内容
13、/div[contains(@class,"post")] 表示选取带有class属性且包含“post”的所有的div节点,取反//div[not(contains(@class,"post"))]
14、//div/p[last()-1] 表示选取div下倒数第二个p节点
15、//div/p[position()>1] 表示选取div下第二个p节点后的所有兄弟节点
二、xpath在爬虫中的应用场景
-
定位元素:使用XPath表达式可以精确地定位到网页中的特定元素,如标题、链接、图片等。
-
提取数据:结合XPath和爬虫工具(如Python的lxml、BeautifulSoup等库),可以轻松地提取网页中的数据,如商品价格、新闻标题、文章正文等。
-
处理复杂的HTML结构:面对复杂的HTML结构,XPath的灵活性和强大功能使其成为处理这类问题的理想选择。
-
自动化表单填写:在网页自动化测试或数据提交过程中,XPath可以用来定位表单元素,并模拟用户输入。
三、使用xpath的基本步骤
-
分析网页结构:首先,你需要分析目标网页的HTML结构,确定要提取的数据位于哪些元素中。
-
编写XPath表达式:根据网页结构,编写XPath表达式来定位并提取所需的数据。XPath表达式可以使用标签名、属性、位置等信息来构建。
-
使用XPath提取数据:在你的爬虫脚本中,使用XPath解析库(如lxml、BeautifulSoup等)来执行XPath表达式,并提取数据。
四、xpath进阶用法
- 位置谓词:
//ul/li[1]
:选择ul
下的第一个li
元素。//div[@class='article']/p[position()=last()]
:选择class
为article
的div
下的最后一个p
元素。
- 比较运算符:
//p[@id='para1']
:选择id
属性为para1
的p
元素。//a[@href!='#']
:选择href
属性不等于#
的a
元素。
- 逻辑运算符:
//input[@type='text' and (@name='username' or @name='email')]
:选择type
为text
且name
为username
或email
的input
元素。
- 内置函数:
contains(str1, str2)
:判断str1
是否包含str2
。starts-with(str, prefix)
:判断字符串str
是否以prefix
开头。substring-before(str, delim)
:返回str
中delim
之前的子字符串。substring-after(str, delim)
:返回str
中delim
之后的子字符串。