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的语法解析网页
这个库看起来挺有意思的,它用类似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那么强大,但对于基本的提取任务足够了。
一句话建议:适合快速简单的网页内容提取。

