Parsel是一个使用XPath和CSS选择器从HTML和XML中提取数据的库
项目描述
Parsel是一个BSD许可协议的Python库,用于从HTML、JSON和XML文档中提取数据。
它支持
在 https://parsel.readthedocs.org 找到 Parsel 的在线文档。
示例 (在线演示)
>>> from parsel import Selector
>>> text = """
<html>
<body>
<h1>Hello, Parsel!</h1>
<ul>
<li><a href="http://example.com">Link 1</a></li>
<li><a href="https://scrapy.net.cn">Link 2</a></li>
</ul>
<script type="application/json">{"a": ["b", "c"]}</script>
</body>
</html>"""
>>> selector = Selector(text=text)
>>> selector.css('h1::text').get()
'Hello, Parsel!'
>>> selector.xpath('//h1/text()').re(r'\w+')
['Hello', 'Parsel']
>>> for li in selector.css('ul > li'):
... print(li.xpath('.//@href').get())
http://example.com
http://scrapy.org
>>> selector.css('script::text').jmespath("a").get()
'b'
>>> selector.css('script::text').jmespath("a").getall()
['b', 'c']
历史
1.9.1 (2024-04-08)
移除了对 pytest-runner 的依赖。
移除了过时的 Makefile。
1.9.0 (2024-03-14)
现在需要 cssselect >= 1.2.0(自 1.8.0 起需要此最低版本,但未正确记录)
移除了对 Python 3.7 的支持
添加了对 Python 3.12 和 PyPy 3.10 的支持
修复了在调用某些 JSON 选择器的 __str__ 或 __repr__ 时出现的异常
使用 black 格式化代码
CI 修复和改进
1.8.1 (2023-04-18)
从 NEWS 中移除 Sphinx 参考,以修复 PyPI 描述
添加 twine check CI 检查以检测此类问题
1.8.0 (2023-04-18)
添加了对 JMESPath 的支持:您现在可以创建一个 JSON 文档的选择器并调用 Selector.jmespath()。有关更多信息示例,请参阅文档。
选择器现在可以从 bytes(使用 body 和 encoding 参数)而不是 str(使用 text 参数)构建,因此没有从 str 到 bytes 的内部转换,内存使用量更低。
类型改进
不再使用 pkg_resources 模块(该模块不在要求中)
文档构建修复
新的要求
jmespath
typing_extensions(在 Python 3.7 上)
1.7.0 (2022-11-01)
添加 PEP 561 风格的类型信息
移除了对 Python 2.7、3.5 和 3.6 的支持
添加了对 Python 3.9-3.11 的支持
现在可以解析非常大的文档(具有深层嵌套或长标签内容),并且 Selector 现在有一个新的参数 huge_tree 来禁用此功能
添加了对 cssselect 1.2.0 新特性的支持
Selector.remove() 和 SelectorList.remove() 方法已弃用,并替换为新的 Selector.drop() 和 SelectorList.drop() 方法,这些方法在 HTML 模式下使用时不会删除删除元素之后的文本。
1.6.0 (2020-05-07)
不再支持 Python 3.4
添加了新的 Selector.remove() 和 SelectorList.remove() 方法,用于从解析的文档树中删除选定的元素
错误报告、测试覆盖率和文档的改进,以及代码清理
1.5.2 (2019-08-09)
Selector.remove_namespaces 获得了显著的性能提升
选择器的可打印表示形式中的 data 值现在在截断时以 ... 结尾,以便使截断明显。
轻微的文档改进。
1.5.1 (2018-10-25)
has-class XPath 函数正确处理了类名中的换行符和其他分隔符;
修复了解析包含空字节的 HTML 文档的问题;
文档改进;
在 CI 上运行 Python 3.7 测试;其他测试改进。
1.5.0 (2018-07-04)
添加了新的 Selector.attrib 和 SelectorList.attrib 属性,这使得获取 HTML 元素的属性变得更加容易。
CSS选择器速度提升:编译结果被缓存(使用LRU缓存用于css2xpath),因此当相同的CSS表达式多次使用时,开销更小。
.get()和.getall()选择器方法已被文档化并推荐,优于.extract_first()和.extract()。
各种文档调整和改进。
另一个变化是,现在使用.get()和.getall()实现.extract()和.extract_first()方法,而不是反过来,并且除了调用Selector.extract之外,其他所有方法现在都内部调用Selector.get。如果自定义Selector子类覆盖了Selector.extract但没有对Selector.get做同样处理,这可能会导致不兼容。如果您有这样的Selector子类,请确保也覆盖了get方法。例如,这
class MySelector(parsel.Selector): def extract(self): return super().extract() + " foo"
应该改为这样
class MySelector(parsel.Selector): def get(self): return super().get() + " foo" extract = get
1.4.0 (2018-02-08)
Selector和SelectorList不能被序列化,因为序列化和反序列化对lxml.html.HtmlElement不起作用;parsel现在显式地抛出TypeError,而不是允许pickle静默地产生错误输出。如果您使用的是Python < 3.6,这可能是向后不兼容的。
1.3.1 (2017-12-28)
修复了上传到pypi的工件。
1.3.0 (2017-12-28)
has-class XPath扩展函数;
parsel.xpathfuncs.set_xpathfunc是注册XPath扩展的简化方式;
Selector.remove_namespaces现在删除命名空间声明;
删除了对Python 3.3的支持;
make htmlview命令,以便更容易地开发Parsel文档。
CI:修复了PyPy的安装;parsel现在也为PyPy3运行测试。
1.2.0 (2017-05-17)
添加了SelectorList.get和SelectorList.getall方法,作为SelectorList.extract_first和SelectorList.extract的别名
为SelectorList.re_first方法添加了默认值参数
添加了Selector.re_first方法
在.re()和.re_first()上添加了replace_entities参数,以关闭替换字符实体引用
错误修复:检测lxml解析的None结果,并回退到空文档
重新排列选择器使用文档中的XML/HTML示例
Travis CI
测试Python 3.6
使用“Portable PyPy for Linux”发行版测试PyPy
1.1.0 (2016-11-22)
将默认HTML解析器更改为lxml.html.HTMLParser,这使得使用一些HTML特定功能更容易
添加css2xpath函数以将CSS转换为XPath
添加对临时命名空间声明的支持
添加对XPath变量的支持
文档改进和更新
1.0.3 (2016-07-29)
添加BSD-3-Clause许可证文件
重新启用PyPy测试
将pytest运行集成到setuptools中(需要Debian打包)
更改了变更日志的名称为NEWS
1.0.2 (2016-04-26)
修复了异常处理中的错误,导致原始跟踪信息丢失
添加了文档字符串和其他文档修复
1.0.1 (2015-08-24)
更新PyPI分类器
为csstranslator模块添加了文档字符串和其他文档修复
1.0.0 (2015-08-22)
文档修复
0.9.6 (2015-08-14)
更新文档
扩展测试覆盖率
0.9.5 (2015-08-11)
支持扩展SelectorList
0.9.4 (2015-08-10)
尝试解决travis-ci/dpl#253的问题
0.9.3 (2015-08-07)
添加base_url参数
0.9.2 (2015-08-07)
将模块统一重命名为selector并提升root属性
添加create_root_node函数
0.9.1 (2015-08-04)
设置Sphinx构建和文档结构
构建通用轮
重命名一些包提取的残留部分
0.9.0 (2015-07-30)
在PyPI上首次发布。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
parsel-1.9.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 14e00dc07731c9030db620c195fcae884b5b4848e9f9c523c6119f708ccfa9ac |
|
MD5 | cd242530b761e477244eeac2caeadb85 |
|
BLAKE2b-256 | 87bdb982085f091367ca25ccb61f2d127655a0daac1716ecfde014ab7c538116 |
parsel-1.9.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c4a777ee6c3ff5e39652b58e351c5cf02c12ff420d05b07a7966aebb68ab1700 |
|
MD5 | e27b5b33dd76e185750bf11f3362d98b |
|
BLAKE2b-256 | 857ee3f1a7ff69303a4e08a8742a285406e5786650d8218ff194743eff292a1e |