将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第三方库


热门话题
JavaPax考试:从非标准Maven存储库解析Karaf特性存储库(XML文件)   java Spring启动Bean创建异常   java中将ArrayList转换为数组的方法   Android Studio的java Unity插件。   java在CheckStyle中从方法计数中排除getter和setter   HibernateJava。sql。SQLSyntaxErrorException:表/视图“序列”不存在   与命令行程序Java vs C通信   java WebView膨胀异常   java在O(n)java8流中寻找两个列表的交集   java使用Gradle运行单元测试时,最大堆大小在哪里设置?   ssl加载java应用程序(CXF)内的jks文件   CI:Jenkins Git:Simple Java项目:希望在特定时间在脚本上发送消息   java根据位置更改数字   java按数值排序字符串数组   macos java版本“1.6.0_65”是否与java 6模棱两可?   Cassandra中的java时间戳