python爬虫之xpath解析基础

xpath解析

  • xpath解析:最常用且最便捷高效的一种解析方式。具有通用性。

    • xpath解析原理:
      - 1.实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中。
      - 2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。
    • 环境的安装
      pip install lxml
      lxml是一种处理xml和html的python语言,也是一种解析库
    • 如何实例化一个etree对象 from lxml import etree
      - 1.将本地html文档中的源码数据加载到etree对象中
      etree.parse(filepath)
      - 2.可以从互联网上获取源码数据加载到etree对象中
      etree.HTML(‘page_text’)#响应的网页源码
      - xpath(‘xpath表达式’)
    • xpath表达式(层级)
      -/:表示的是从根结点开始定位。一个/表示一个层级。
      -//:表示的是多个层级。可以从任意位置开始定位。
      -属性定位://meta[@charset=“utf-8”]
      通用写法://tag[@attrName=“attrValue”]
      -索引定位://tag[@attrName=“attrValue”]/tag[n]索引是从1开始的
      -取文本:/text():获取的是标签中直系的文本内容
      //text():获取的是标签中非直系的文本内容
      -取属性:/@attrName在这里插入图片描述

在这里插入图片描述

    a = tree.xpath('//meta')
    print(a)
    a = tree.xpath('//meta[@charset="utf-8"]')
    print(a)

在这里插入图片描述

问题阐述:
使用lxml.etree.parse()解析html文件,该方法默认使用的是“XML”解析器,所以如果碰到不规范的html文件时就会解析错误,报错代码如下:
在这里插入图片描述

问题解决:
自己创建html解析器,增加parser参数

parser = etree.HTMLParser(encoding="utf-8")
tree = etree.parse('yemian.html',parser=parser)

修改后代码:

from lxml import etree

if __name__ == '__main__':

    #1.实例化一个etree对象,且将本地html文档中的源码数据加载到该对象中
    parser = etree.HTMLParser(encoding="utf-8")
    tree = etree.parse('yemian.html',parser=parser)
    #2.xpath表达式实现标签定位,获取到的是一个Elemnet的列表
    r = tree.xpath('/html/head/title')
    print(r)

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值