初探python爬虫(四)——xpath

在爬虫时可以使用xpath做相应的信息抽取

xpath常用规则

表达式 描述
nodename 选取此接待你的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
选取当前子节点的父节点
@ 选取属性

安装
cmd-》pip3 install lxml

实例

##第一种方式,直接再python代码中解析html字符串


#导入lxml,下面两句话相当于from lxml import etree
#只不过在python之后的lxml模块中不再能直接应仍有etree模块
from lxml import html
etree = html.etree

text='''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单验证01</title>
</head>
<body>
    <ul>
    <li><a href ="/a/b/c/java/" >java</a></li>
    <li><a href ="/a/b/c/python/" >python</a></li>
    <li><a href ="/a/b/c/ai/" >ai</a></li>
    
    </ul>
</body>
</html>

'''
#使用etree解析html中的字符串
html = etree.HTML(text)
# print(html)
#提取是数据
r= html.xpath('/html/body/ul/li/a')
# print(r)#[<Element a at 0x16f6748>, <Element a at 0x16f6828>, <Element a at 0x16f6968>]

# r= html.xpath('/html/body/ul/li/a/text()')
# print(r) #['java', 'python', 'ai']

r= html.xpath('/html/body/ul/li[1]/a/text()')
print(r) #['java']



'''
/   当前元素的直接字节点
//  当前元素的子节点或者孙子节点

text()  获取文本
@attr   获取属性对应的值


获取第一个
li[1]

获取最后一个
li[last]

获取前两个
li[position()<3]

获取倒数第三个
li[last()-2]


'''
发布了42 篇原创文章 · 获赞 12 · 访问量 6112

猜你喜欢

转载自blog.csdn.net/Alingyuzi/article/details/104200403