java - 如何使用java和jsoup从页面源获取数据
问题描述
如何从以下页面源中获取价值$23,000,000和$47,351,251 ?我只想从源代码中获取这些值,但我不确定最好的方法。
<div class="txt-block">
<h4 class="inline">Budget:</h4>$23,000,000
<span class="attribute">(estimated)</span>
</div>
<div class="txt-block">
<h4 class="inline">Opening Weekend USA:</h4> $260,382,
<span class="attribute">20 December 2013</span>, <span class="attribute">Limited Release</span>
</div>
<div class="txt-block">
<h4 class="inline">Gross USA:</h4> $25,568,251
</div>
<div class="txt-block">
<h4 class="inline">Cumulative Worldwide Gross:</h4> $47,351,251
</div>
我试过这样:
String url = "https://www.imdb.com/title/tt1798709";
Connection connection = Jsoup.connect(url);
Document document = connection.get();
Elements element = document.getElementsByClass("txt-block");
String gross = "";
String budget = "";
String budgetRegex = "Budget:.*";
String grossRegex = "Cumulative Worldwide Gross:.*";
for (Element e : element) {
if (e.text().matches(budgetRegex)) {
String text = e.text();
budget = StringUtils.substringBetween(text, "$", " ");
break;
} else {
budget = null;
}
}
for (Element e : element) {
if (e.text().matches(grossRegex)) {
String text = e.text();
gross = StringUtils.substringAfter(text, "$");
break;
} else {
gross = null;
}
}
System.out.println(gross + ", " + budget);
它正在工作,但有更好的解决方案吗?
解决方案
您可以使用 jsoup 伪选择器来完成这项工作:
Document document = Jsoup.parse(html);
String budget = document.select("div:contains(Budget:)").first().ownText();
String gross = document.select("div:contains(Cumulative Worldwide Gross:)").first().ownText();
System.out.println(gross + ", " + budget);
有关伪选择器的更多信息,您可以在此处找到:https ://jsoup.org/cookbook/extracting-data/selector-syntax
推荐阅读
- kubernetes - Kubernetes - 达到 pod 限制时,AutoScaling 不会增加节点数
- wpf - 当弹出窗口打开时,WPF如何防止与后台控件交互
- ios - 如何制作 swift listView 轮盘动画
- python - 如何检查另一个数据框中是否不存在字符串值?
- tensorflow - 使用 TensorFlow 数据集 from_generator() 使用自定义生成器和 ImageDataGenerator 创建多输入/输出
- flutter - 在 null 上调用了方法“子字符串”。接收方:null 尝试调用:substring(0, 1)
- json - 基于 pandas 列创建具有 json 格式的列
- php - 如何使用 htacces 文件隐藏 php 中的完整路径
- node.js - 如何减慢/瓶颈`fs.createReadStream`数据事件以进行调试
- sql - SQL 语句中的预期参数问题