python-在lxml中使用XPath语法

1、获取所有li标签:

from lxml import etree
 
html = etree.parse('hello.html')
print(type(html)) #显示etree.parse() 返回类型
 
result = html.xpath('//li')
 
print(result) #打印<li>标签的元素集合

2、获取所有li元素下的所有class属性的值:

from lxml import etree
 
html = etree.parse('hello.html')
 
result = html.xpath('//li/@class')
 
print(result)

3、获取li标签下href 为 www.baidu.com的标签:

from lxml import etree
 
html = etree.parse('hello.html')
 
result = html.xpath('//li/a[@href="www.baidu.com"]')
print(result)

4、获取li标签下的所有span标签:

from lxml import etree
 
html = etree.parse('hello.html')
 
#result = html.xpath('//li/span')
#注意这么些是不对的:
#因为 / 是用来获取子元素的, 而<span> 并不是 <li>的子元素,所以要用双斜杠
 
result = html.xpath('//li//span')
print(result)

5、获取li标签下载a标签里的所有class:

from lxml import etree
 
html = etree.parse('hello.html')
 
result = html.xpath('//li/a/@class')
print(result)

lxml结合xpath注意事项:

1、使用 xpath 语法,应该使用 Element.xpath 方法。来执行xpath的选择。示例代码如下:

trs = html.xpath("//tr[position()>1]"
#获取第二行开始的所有tr标签
#xpath函数返回的永远是一个列表。

2、获取某个标签的属性

href = html.xpath("//a/@href")
#获取所有a标签的href属性的值

3、获取文本,是通过 xpath中的 text() 函数,示例代码如下:

address = tr.xath(".'td[4]/text()")[0]
#获取返回列表的第一个元素

4、在某个标签下,再执行xpath函数,获取这个标签下的子元素,那么应该在//之前加一个点,代表的是当前元素下获取。示例代码如下:

address = tr.xath(".'td[4]/text()")[0]
#获取返回列表的第一个元素

转载:https://www.cnblogs.com/Karl-H/p/14678109.htm

posted @ 2021-04-29 15:48  _cai  阅读(186)  评论(0编辑  收藏  举报