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