跳转到主要内容

Python的jQuery类似库

项目描述

pyquery: Python的jQuery类似库

Build Status

pyquery 允许您在XML文档上执行jQuery查询。API尽可能地与jQuery相似。pyquery使用lxml进行快速的XML和HTML操作。

这不是(或者至少目前不是)一个用于生成或与JavaScript代码交互的库。我只是喜欢jQuery API,并在Python中缺少它,所以我告诉自己“嘿,让我们在Python中实现jQuery”。这就是结果。

项目正在GitHub上的一个Git仓库中积极开发。我有给任何想要的人推送访问权限然后审查他们所做的事情的政策。所以如果你想贡献,请给我发电子邮件。

请在github问题跟踪器上报告错误。

快速入门

您可以使用PyQuery类从字符串、lxml文档、文件或URL中加载XML文档

>>> from pyquery import PyQuery as pq
>>> from lxml import etree
>>> import urllib
>>> d = pq("<html></html>")
>>> d = pq(etree.fromstring("<html></html>"))
>>> d = pq(url=your_url)
>>> d = pq(url=your_url,
...        opener=lambda url, **kw: urlopen(url).read())
>>> d = pq(filename=path_to_html_file)

现在d就像jQuery中的$

>>> d("#hello")
[<p#hello.hello>]
>>> p = d("#hello")
>>> print(p.html())
Hello world !
>>> p.html("you know <a href='https://pythonlang.cn/'>Python</a> rocks")
[<p#hello.hello>]
>>> print(p.html())
you know <a href="https://pythonlang.cn/">Python</a> rocks
>>> print(p.text())
you know Python rocks

您可以使用jQuery中可用的伪类,但这些伪类在CSS中不是标准的,例如::first :last :even :odd :eq :lt :gt :checked :selected :file

>>> d('p:first')
[<p#hello.hello>]

请参阅http://pyquery.rtfd.org/以获取完整文档

新闻

2.0.1 (2024-08-30)

  • 重大变更:似乎不再可能使用XML文件与HTML解析器一起使用,因此不再进行测试

  • 停止支持Python 3.7

2.0.0 (2022-12-28)

  • 重大变更:以"http://"或"https://"开头的输入(如PyQuery("http://example.com")将不再获取URL的内容。希望保留旧行为的用户应切换到PyQuery(url="http://example.com")。

  • 添加nextUntil方法

  • .remove()不再在删除的元素位置插入一个空格

  • 修复.html()输出中顶级元素文本的转义问题

  • 支持(并要求)cssselect 1.2+

  • 停止支持Python 3.5/3.6

1.4.3 (2020-11-21)

  • 不再使用通用轮子

1.4.2 (2020-11-21)

  • 修复在调用PyQuery(“<textarea></textarea>”).text()时引发的异常

  • python2不再受支持

1.4.1 (2019-10-26)

  • 这是带有py2支持的最新版本

  • 删除py33, py34支持

  • 网络爬虫改进:默认超时和会话支持

  • 添加根据规范序列化表单相关元素的API方法

  • 在查询文本区域文本/值时包括HTML标记

1.4.0 (2018-01-11)

  • .text()的重构以匹配firefox行为。

1.3.0 (2017-10-21)

  • 删除一些未维护的模块:pyquery.ajaxpyquery.rules

  • 代码清理。不再使用python2.6/python3.2所需的丑陋技巧。

  • 在CI上使用python3.6运行测试

  • method参数添加到.outer_html()

1.2.17 (2016-10-14)

  • PyQuery('<input value="">').val()''

  • PyQuery('<input>').val()''

1.2.16 (2016-10-14)

  • .attr('value', '')不再删除value属性

  • <input type="checkbox">没有value="...".val()'on'

  • <input type="radio">没有value="...".val()'on'

  • <select>没有<option selected>的值是他们的第一个<option>(或如果没有选项则为None

1.2.15 (2016-10-11)

  • .val()不应该引发异常

  • 停止支持py26

  • 通过返回self改进.extend()

1.2.14 (2016-10-10)

  • 修复<textarea><select>的val(),以匹配jQuery行为

1.2.13 (2016-04-12)

  • 注意显式支持Python 3.5

1.2.12 (2016-04-12)

  • make_links_absolute现在负责处理空白

  • 添加了伪选择器:has()

  • 将cookies参数添加为requests的允许参数

1.2.11 (2016-02-02)

  • 在PyQuery副本上保留命名空间属性

  • 当http响应代码为2XX时,不再引发错误

1.2.10 (2016-01-05)

  • 修复#118:在outer_html方法中实现了lxml.etree.tostring的使用

  • 修复#117:如果HTTP状态码不等于200,则引发HTTP错误

  • 修复#112:make_links_absolute不再应用于表单操作

  • 修复#98:contains行为像jQuery

1.2.9 (2014-08-22)

  • PyQuery自定义函数支持关键字参数

  • 修复#78:items必须注意父元素

  • 修复#65 PyQuery.make_links_absolute()不再创建不存在的‘href’属性

  • 修复#19. is_()已损坏。

  • 修复 #9. .replaceWith(PyQuery 元素) 产生错误

  • 移除对官方 Python 3.2 的支持(主要因为第三方半依赖问题)

1.2.8 (2013-12-21)

  • 修复 #22:当文件包含无效 XML 时,通过文件名打开失败

  • 在 .remove_class() 中修复了错误

1.2.7 (2013-12-21)

  • 使用 pep8 名称来命名方法,但保留 camel case 方法的别名。例如:remove_attr 和 removeAttr 都有效。修复 #57

  • 如果没有文本节点,.text() 现在返回空字符串而不是 None。修复 #45

  • 修复 #23:removeClass 为之前没有类属性的元素添加了类属性

1.2.6 (2013-10-11)

  • README_fixt.py 未包含在发布中。修复 #54。

1.2.5 (2013-10-10)

1.2.4

  • 迁移到 GitHub。因此,一些文件从 .txt 重命名为 .rst

  • 添加 .xhtml_to_html() 和 .remove_namespaces()

  • 使用 requests 获取 URL(如果可用)

  • 使用 restkit 的代理而不是 Paste(Paste 将与 py3 一起死亡)

  • 允许打开 https URL

  • 不再支持 python2.5(可能仍能工作,但测试已损坏)

1.2.3

  • 允许在 .filter() 回调中传递此参数

  • 添加 .contents() 和 .items()

  • 添加 tox.ini

  • 错误修复:修复 #35 #55 #64 #66

1.2.2

  • 修复 cssselectpatch 以匹配 cssselect 的新实现。修复问题 #62,#52 和 #59(白浩宇)

  • 修复问题 #37(Caleb Burns)

1.2.1

  • 允许使用自定义 css 转换器。

  • 修复问题 44:XML 文档中的大小写问题

1.2

  • PyQuery 现在使用 cssselect。请参阅问题 43。

  • 修复问题 40:将 .html() 的额外参数传递给 lxml.etree.tostring

1.1.1

  • 小版本发布。包含测试文件,因此您可以从 tarball 运行测试。

1.1

  • 修复问题 30、31、32 - py3 改进 / webob 1.2+ 支持

1.0

  • 修复问题 24

0.7

  • Python 3 兼容

  • 添加 __unicode__ 方法

  • 添加 root 和 encoding 属性

  • 修复问题 19、20、22、23

0.6.1

  • 将 README.txt 移动到包根目录

  • 添加 CHANGES.txt 并将其添加到 long_description

0.6

  • 添加 PyQuery.outerHtml

  • 添加 PyQuery.fn

  • 添加 PyQuery.map

  • 更改 PyQuery.each 的行为以反映 jQuery API

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

pyquery-2.0.1.tar.gz (45.0 kB 查看哈希)

上传于 源代码

构建分发

pyquery-2.0.1-py3-none-any.whl (22.6 kB 查看哈希值)

上传于 Python 3

支持