Python库htmlparsing 0.1.0发布!如何使用类似RESTful的语法解析网页

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

解析列表

import requests
from htmlparsing import Element, HTMLParsing, Text, Attr, Parse, HTML, Markdown

url = ‘https://news.ycombinator.com/’ r = requests.get(url) article_list = HTMLParsing(r.text).list(’.athing’, {‘title’: Text(‘a.storylink’), # css selector ‘link’: Attr(‘a.storylink’, ‘href’)}) print(article_list)

解析详情

import requests
from htmlparsing import Element, HTMLParsing, Text, Attr, Parse

url = ‘https://news.ycombinator.com/item?id=16476454’ r = requests.get(url) article_detail = HTMLParsing(r.text).detail({‘title’: Text(‘a.storylink’), ‘points’: Parse(‘span.score’, ‘>{} points’), ‘link’: Attr(‘a.storylink’, ‘href’)}) print(article_detail)


Python库htmlparsing 0.1.0发布!如何使用类似RESTful的语法解析网页

1 回复

这个库看起来挺有意思的,它用类似RESTful的语法来解析HTML。我看了下文档,基本用法是这样的:

from htmlparsing import parse_html

# 假设我们要解析的HTML
html_content = """
<html>
<body>
    <div class="article">
        <h1>标题</h1>
        <p>第一段内容</p>
        <p>第二段内容</p>
    </div>
</body>
</html>
"""

# 使用类似RESTful的路径语法
result = parse_html(html_content, "/html/body/div/article/h1")
print(result)  # 输出: ['标题']

# 获取所有段落
paragraphs = parse_html(html_content, "/html/body/div/article/p")
print(paragraphs)  # 输出: ['第一段内容', '第二段内容']

# 使用属性选择器
title = parse_html(html_content, "/html/body/div[@class='article']/h1")
print(title)  # 输出: ['标题']

核心就是那个路径语法,跟XPath有点像但更简单。你可以用/来分隔层级,用[@属性名='值']来筛选元素。还支持一些简写,比如//表示任意深度查找。

这个库适合简单的网页解析需求,语法直观容易上手。不过功能上可能不如BeautifulSoup或lxml那么强大,但对于基本的提取任务足够了。

一句话建议:适合快速简单的网页内容提取。

回到顶部