html - 用 Dart 解析 Html 页面
问题描述
我正在尝试解析 HTTP 获取请求中的以下条目。在正文中,您会看到一个带有函数调用的脚本标记,我需要在其中访问 HTML 标记内的 JSON。
<!DOCTYPE html>
<html translate="no">
<head></head>
<body>
<script>
$(function() {
intranet.list.frontend.init({
gridDataAndConfiguration: {
"Here is a big Json - WANTED"
},
},
});
</script>
</body>
</html>
到目前为止,我没有使用任何 Dart 特定的解析方法来解析 HTML,例如 "parse" from package:html/parser.dart
. 该尝试成功地搜索了 HTML DOM 中的所有“脚本”标签,但不幸的是,我没有在引用的脚本标签中找到或显示 JSON 或函数调用!
问题是,如何使用 Dart 访问给定 HTML 页面中的 JSON?
解决方案 :
RegExp re = RegExp(r'\[\{.*?\}\]');
var parsedHtml = parse(htmlText);
var allScripts = parsedHtml.getElementsByTagName('script');
for (int i = 0; i < allScripts.length; i++) {
if (allScripts[i].innerHtml.contains(startString)) {
Iterable<String> result =
re.allMatches(allScripts[i].innerHtml).map((m) => m[0]);
List<dynamic> jsonParsed = [];
for (var match in result) jsonParsed.add(jsonDecode(match));
感谢您的回答和帮助。
解决方案
推荐阅读
- string - Python:删除列表中字符串中的单引号
- php - Symfony:将用户角色存储在可以由更有特权的用户创建和更改的位置
- mysql - MySQL中根据条件忽略WHERE语句
- javascript - Gremlin 查询:如何在 javascript 中指定排序顺序
- javascript - 如何使用chart.js在柱后显示值
- javascript - Angular 6:如果数据来自服务,自定义管道返回 NaN
- php - Wordpress 插件本地化 - 无法显示翻译
- ibm-midrange - 在 RPG 程序中使用长文件名
- c# - EF Linq 中的 HAVING 子句
- android - 当用户单击其中的 ClickableSpan 时,如何阻止 CheckBox Pressed 状态?