javascript - 如何使用正则表达式从复杂且动态的 JavaScript 样式字典中提取特定值?
问题描述
我有一个从 HTML 网页检索到的大量 JS 字典,我想从中提取数据而不解析 Javascript。目前我正在尝试使用正则表达式来实现这一点。
问题是字典非常复杂和动态,这意味着有时我可以找到一些插入的新键,但我希望我的目标键保持不变。
这是经过高度修剪的数据,省略了一些值,但它保持了复杂性。
{"compactVideoRenderer":{"videoId":"abcDE123-_","thumbnail":{"thumbnails":[{"url":"OMMITED_URL","width":168,"height":94},{"url":"OMMITED_URL_TWO","width":336,"height":188}]},"title":{"accessibility":{"accessibilityData":{"label":"OMMITED_TITLE"}},"simpleText":"OMMITED_TITLE_SIMPLE"}}}
从上面,我需要提取以下值:
- compactVideoRenderer -> videoId ("abcDE123-_")
- compactVideoRenderer -> 可访问性 -> simpleText ("OMMITED_TITLE_SIMPLE")
解决方案必须足够灵活,如果我在任何位置插入另一个键值对(只要它不更改目标键的“地址”),正则表达式应该仍然能够找到目标值。
由于正则表达式在编程语言方面是通用的,因此任何语言的代码都会有所帮助,但是 Python 中的代码或建议会更有帮助!
解决方案
使用https://pypi.org/project/jsonfinder/从 HTML 字符串中提取 JSON 对象。然后你可以使用普通的 Python 字典。不需要正则表达式。
推荐阅读
- hybris - Hybris 扩展 .project 文件
- laravel - Laravel 护照。为什么我不能创建访问令牌?
- jquery - 通过循环更新 Html 内容不反映最终值
- flutter - MaterialApp 刚刚开始表现得很奇怪,创建我没有点击的屏幕
- c++ - leetcode 问题 154 的运行时错误:重新排序列表
- ansible - Ansible yaml 制动长链接,如字符串,可变插值到多行
- javascript - Express JS 通过控制器函数传递中间件
- javascript - JS 正则表达式返回 -1 & 0
- javascript - 为什么小数字字符串大于大数字字符串
- python - python - 如何仅针对特定值在python中找到spearman的相关性?