Jsoup 没有选择脚本标签
Jsoup is not Selecting Script Tag
我正在尝试 select 页面上的脚本标签,文本包含
Document doc=jsoup.parse(somehtml);
Elements ele=doc.select("script:contains(accountIndex)");
页面上脚本标签的代码是
<script>(function() {var vm = ko.mapping.fromJS({
"accountIndex": 1,
"accountNumber": "*******",
"hideMoreDetailsText": "Hide More Details",
"viewAccountNumberText": "Show Account Number",
"hideAccountNumberText": "Hide Account Number",
});window.AccountDetails = vm;})();</script>
如果我传递 css 脚本标签的定位器,我可以 select 这个脚本标签,例如
Elements ele=doc.select("body > script:nth-child(44)");
页面上有很多脚本标签,所以第二种方法不是generic.It以后可能会改变。
谁能告诉我第一个有什么问题 approach.Because 我可以 select 包含 jsoup
的页面上的其他标签
jsoup 仅支持 CSS select 或那些只允许您 select 基于 CSS 类 和 [=23 的属性=] 元素,而不是它们的文本内容 (CSS selector based on element text?). You could try using another framework for parsing and querying the HTML, for example XOM and TagSoup like described here:
或者您可以像这样将 CSS 类 添加到您的脚本标签中:
<script class="class1">
// script1
</script>
<script class="class2">
// script2
</script>
然后您可以 select 使用 jsoup 通过 CSS 再次脚本标记:
Elements elements = document.select("script.class1");
选择器 :contains(text)
查找具有 text 值的元素。脚本没有文本,它有数据(否则 JS 将在浏览器中可见)。您可以改用 :containsData(data)
选择器。
例如:
Elements els = doc.select("script:containsData(accountIndex)");
这是一个 example. The Selector documentation 具有所有处理的查询类型(这不仅仅是严格的 CSS)。
我正在尝试 select 页面上的脚本标签,文本包含
Document doc=jsoup.parse(somehtml);
Elements ele=doc.select("script:contains(accountIndex)");
页面上脚本标签的代码是
<script>(function() {var vm = ko.mapping.fromJS({
"accountIndex": 1,
"accountNumber": "*******",
"hideMoreDetailsText": "Hide More Details",
"viewAccountNumberText": "Show Account Number",
"hideAccountNumberText": "Hide Account Number",
});window.AccountDetails = vm;})();</script>
如果我传递 css 脚本标签的定位器,我可以 select 这个脚本标签,例如
Elements ele=doc.select("body > script:nth-child(44)");
页面上有很多脚本标签,所以第二种方法不是generic.It以后可能会改变。
谁能告诉我第一个有什么问题 approach.Because 我可以 select 包含 jsoup
的页面上的其他标签jsoup 仅支持 CSS select 或那些只允许您 select 基于 CSS 类 和 [=23 的属性=] 元素,而不是它们的文本内容 (CSS selector based on element text?). You could try using another framework for parsing and querying the HTML, for example XOM and TagSoup like described here:
或者您可以像这样将 CSS 类 添加到您的脚本标签中:
<script class="class1">
// script1
</script>
<script class="class2">
// script2
</script>
然后您可以 select 使用 jsoup 通过 CSS 再次脚本标记:
Elements elements = document.select("script.class1");
选择器 :contains(text)
查找具有 text 值的元素。脚本没有文本,它有数据(否则 JS 将在浏览器中可见)。您可以改用 :containsData(data)
选择器。
例如:
Elements els = doc.select("script:containsData(accountIndex)");
这是一个 example. The Selector documentation 具有所有处理的查询类型(这不仅仅是严格的 CSS)。