我的HTML页面如下所示:
<htm>
<section class="posts">
<script type="application/ld+json">
{
"url": "http://schema.org",
"title": "some Title"
}
</script>
<article class="post">
</html>
我想在<script type="application/ld+json">
和</script>
之间提取数据。我尝试使用以下代码,但它无法正常工作。
Pattern pattern = Pattern.compile("<script type=\"application\\/ld\\+json\">(.*?)</script>");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
我做错了吗? 感谢。
答案 0 :(得分:4)
从HTML上面选择JSON的正则表达式
<script type="application\/ld\+json">(.*)<\/script>
在Java代码中:
String str = "<htm><section class=\"posts\"><script type=\"application/ld+json\">{\"url\": \"http://schema.org\", \"title\": \"some Title\"}</script><article class=\"post\"></html>";
String regex = "<script type=\"application\\/ld\\+json\">(.*)<\\/script>";
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
打印
{“url”:“http://schema.org”,“title”:“some title”}
请参阅DEMO了解
答案 1 :(得分:2)
Jsoup可能是最适合您的解决方案;它允许您快速轻松地解析HTML。 对于您的特定问题(假设您从字符串中获取HTML),以下内容将起作用:
Document doc = Jsoup.parse(str);
Elements scriptElements = doc.select("script[type=\"application/ld+json\"]");
String scriptContent = scriptElements.first().html()