Python xpath表达式学习

XPath表达式

XPath 全称XML Path Language 即XML路劲语言,是一门在xml文档中查找数据信息的语言。最初是用来搜寻XML文档的,但同样适用于HTML文档,所以在做爬虫的时候完全可由XPath提取信息。

1. lxml模块安装

lxml是一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据。

lxml和正则一样,也是用C实现的,是一款高性能的解析器,不过在Python中属于是第三方模块,需要进行安装。 pip install lxml

2. 获取特殊的HTML

from lxml import etree
# 从lxml中导入etree模块
text = '''
<div>
  <ul>
    <li calss = "item01">这是一个li标签</a></li>
    <li calss = "item02"><a href="https://www.baidu.com/">小张</a></li>
    <li calss = "item03"><a href="https://www.baidu.com/">小王</a></li>
    <li calss = "item04">
        <span>小王</span>
    </li>
  </ul>
</div>
'''
html = etree.HTML(text) # 这个对象是特殊的html
'''
将用来解析字符串格式的HTML文档对象转变为特殊的HTML文档,
特殊包含3处:
1. 会额外添加一些标签(补充标签)
2. 转化为二进制字节码(中文转化为二进制字节码)
3. 对格式进行处理(将格式进行对其)
'''
result = etree.tostring(html,encoding="utf-8").decode()
print(result)

# 返回输出
<html><body><div>
  <ul>
    <li calss="item01">这是一个li标签</li>
    <li calss="item02"><a href="https://www.baidu.com/">小张</a></li>
    <li calss="item03"><a href="https://www.baidu.com/">小王</a></li>
    <li calss="item04">
        <span>小王</span>
    </li>
  </ul>
</div>
</body></html>

3. 获取标签内容

3. 获取标签属性


from lxml import etree

html = etree.parse("./test.html", etree.HTMLParser())
result = etree.tostring(html, encoding="utf-8").decode()
# print(result)

value_html = html.xpath("//div")
#print(value_html)
print(type(value_html))
print(value_html[0])
print(value_html[0].text)

value_html = html.xpath("//div//p")
print(value_html[0])
print(value_html[0].text)


value_html = html.xpath("//div/span[@class='span01']")
print(value_html[0])
print(value_html[0].text)

value_html = html.xpath("//div/span/@class")
print(value_html)

value_html = html.xpath("//a/@href")
print(value_html)

注:源自51CTO课堂 Python网络爬虫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值