htmlparsing: 纯净简单的 HTML 解析库

2018-02-26 19:24:47 +08:00
 prasanta

HTML Parsing

纯净的 HTML 解析库, 取代复杂的 beautifulsoup4, pyquery, lxml

github: https://github.com/gaojiuli/htmlparsing

安装

pip install htmlparsing

# or

pip install git+https://github.com/gaojiuli/htmlparsing

用法

import requests

from htmlparsing import Element

url = 'https://python.org'
r = requests.get(url)

初始化

e = Element(text=r.text, base_url=url)

获取页面中的链接

e.links
"""
{...'/users/membership/', '/events/python-events', '//docs.python.org/3/tutorial/controlflow.html#defining-functions'}
"""


e.absolute_links
"""
{...'https://python.org/download/alternatives',  'https://python.org/about/success/#software-development', 'https://python.org/download/other/', 'https://python.org/community/irc/'}
"""

选择器以及选择属性

e.xpath('//a')[0].attrs
"""{'href': '#content', 'title': 'Skip to content'}"""

e.xpath('//a')[0].attrs.title
"""Skip to content"""

e.css('a')[0].attrs
"""{'href': '#content', 'title': 'Skip to content'}"""

e.parse('<a href="#content" title="Skip to content">{}</a>'))
"""<Result ('Skip to content',) {}>"""

获取文本内容和整个 HTML

e.xpath('//a')[5].text
"""PyPI"""

e.xpath('//a')[5].html
"""<a href="https://pypi.python.org/" title="Python Package Index">PyPI</a>"""

e.xpath('//a')[5].markdown
"""[PyPI]( https://pypi.python.org/ "Python Package Index")"""

目前支持的选择器: xpath, css ,parse

github: https://github.com/gaojiuli/htmlparsing

2419 次点击
所在节点    Python
9 条回复
engHacker
2018-02-26 19:40:59 +08:00
恕我直言,我感觉你这是对 kenneth 大神的 requests-html( https://github.com/kennethreitz/requests-html)低配仿造啊……
prasanta
2018-02-26 19:57:15 +08:00
@engHacker 是啊,我只是做一个不绑定 requests 的而已
lhx2008
2018-02-26 19:59:26 +08:00
还是解析神器 pyquery 好用
lhx2008
2018-02-26 20:02:48 +08:00
pyquery 链接就直接 d("a")啊,xpahth 不是更麻烦
polythene
2018-02-26 20:04:42 +08:00
恕我直言,要不是有人指出来,你会提出这是“参考”了 kenneth 大神的项目吗?
xuyl
2018-02-26 20:11:29 +08:00
@polythene 一定要这么步步紧逼吗?哈哈,打脸打得好
prasanta
2018-02-26 20:13:19 +08:00
@polythene 我是先给他提了 issue,对于 html 和 element 作为共同的东西看待,他没回复,我就实现了一个。
prasanta
2018-02-26 20:15:04 +08:00
提 pr 改动太大。
prasanta
2018-02-26 20:22:32 +08:00
@lhx2008 事确实 pyquery 更好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX