Skip to main content

操作更方便的xpath, 使用方法类似于Beautiful Soup4, 但是比他更快速, 功能更强大

Project description

操作更方便的xpath

使用方法类似于Beautiful Soup4, 但是比他更快速, 功能更强大

import zxpath2

def find(name=None, class_=None, text=None, deep=True, index: None or int = None, **attrs):
    '''
    查询节点
    :param name: 元素名, 如果不是str类型则查找所有元素
    :param class_: class属性
    :param text: 文本值
    :param deep: 是否深度查询孙节点
    :param index: 取出第几个结果
    :param attrs: 属性名前加下划线_会排除这个属性, 如_id=True表示不存在id的元素, 属性值为True, 表示这个属性匹配任意值
    :return: index存在时: 成功返回_Element对象, 失败返回None, index不存在时:返回包含_Element对象的列表
    '''
    pass

zx = zxpath2.load('etree对象或者html源码') #加载

zx.find('div', id='content') #查询id为'content'的所有div, 返回包含_Element对象的列表
zx.find('div', id=False, index=0) #查询不存在id的第一个div, 返回_Element对象
zx.find('div', _id='content', deep=False) #在当前节点中查询id不为'content'的所有div, 返回包含_Element对象的列表
zx.find('div', id='content', index=-1) #查询id为'content'的最后一个div, 返回_Element对象

zx('div', id='content') #_Element对象可以作为函数名直接调用find

_Element对象

node = zx.find('div')
node.id #获取id属性
node.text #获取文本
node.string #获取整个div的所有文本
node.a #获取在这个节点下搜索到的第一个a元素节点
node.html #获取这个节点的html源码
node.find
node(*attr, **kw) #同find
node.xpath('./text()') #使用原始xpath代码查询,

更新日志

发布时间 版本 发布说明
19-01-21 1.0.2 重载了str()的结果, 现在可以用child_in判断是否为另一个_Element的子孙了, 也可以使用in来判断
19-01-18 1.0.1 修复获取所有父辈节点时会报错的bug
18-11-03 1.0.0 重构zxpath架构, 项目改名为zxpath2, 更改了绝大部分的方法名和参数

本项目仅供所有人学习交流使用, 禁止用于商业用途

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

zxpath2-1.0.2-py3-none-any.whl (20.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page