将html解析为json

html2json的Python项目详细描述


PyPi versionPyPi pyversionsPyPi license

使用json中定义的模板将html网页转换为json数据。

安装

这个包在pypi上提供。只需使用pip install -U html2json来安装它。然后可以使用from html2json import collect导入它。

API

方法是collect(html, template)html是加载为字符串的页面的html,template是加载为python对象的模板的json。

注意,html必须包含根节点,如<html>...</html><div>...</div>

模板语法

  • 基本语法是keyName: [selector, attr, [listOfRegexes]]
    1. selector是一个css选择器(由lxml支持)。
      • 当选择器为null时,根节点本身是匹配的。
      • 当无法匹配选择器时,将返回null
    2. attr与属性值匹配。当内部文本为空时,可以null匹配内部文本或外部文本。
    3. 正则表达式列表[listOfRegexes]支持两种形式的正则表达式操作。列表中的操作按顺序执行。
      • 替换:s/regex/replacement/gg对于多个替换是可选的。
      • 提取:/regex/

例如:

{"Color":["head link:nth-of-type(1)","href",["/\\w+(?=\\.css)/"]],}
  • 作为json,嵌套结构很容易构建。
{"Cover":{"URL":[".cover img","src",[]],"Number of Favorites":[".cover .favorites","value",[]]},}
  • 可以使用另一种简化语法keyName: [subRoot, subTemplate]
    1. subRoot每个子条目的新根的css选择器。
    2. subTemplate是每个条目的递归子模板。

例如,前面的示例可以简化为以下内容。

{"Cover":[".cover",{"URL":["img","src",[]],"Number of Favorites":[".favorites","value",[]]}],}
  • 要按照同一子模板提取子项列表,列表语法为keyName: [[subRoot, subTemplate]]。请注意与前面语法的区别(围绕[])。
    1. subRoot是每个子条目的新根的css选择器。
    2. subTemplate是每个条目的递归子模板。

例如:

{"Comments":[[".comments",{"From":[".from",null,[]],"Content":[".content",null,[]],"Photos":[["img",{"URL":["","src",[]]}]]}]]}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何运行一个在播放歌曲的同时创建和更改UI的方法?   eclipse错误:无法找到或加载主类Java,因为类文件anme和类名不同?   两个数字相加得到一个值的java算法   java我可以更改字符串吗?   java Hibernate 5.2:以编程方式从其他jar加载映射   java如何访问随机跳转到固定位置的二进制文件   java是解析器实现中文档的功能   Javasocket的两端齐平   java查找将两个非常大的整数之和除以相等块的步骤   java如何在Restlet中调用带超时的异步HTTP客户端   java如何从servlet请求将hashmap传递给jsp。塞塔提布特   java Spring MVC HTTP状态500–内部服务器错误,Servlet。servlet[dispatcher]的init()引发异常   java即使没有alpha通道,如何将PNGFiles加载为ARGB_8888?   java将subscribe的返回类型映射到其他类型   javascript如何在安卓 WebView中启用longpress操作下载图像?   java将字符串作为hashmap值的一部分添加到StringList中   JavaSpringAOP:代表类型声明其他方法或字段   Java将二进制序列转换为字符   java使用ApachePOI获取最后一行值   为什么要在FPS(每秒帧数)跟踪器中添加时间?(爪哇)