java - java中的价格提取
问题描述
我正在尝试创建一个不和谐的机器人来搜索用户输入的项目"!price item"
,然后给我一个价格,我以后可以在代码中使用。我想出了如何将html
代码放入字符串或 doc 文件中,但我正在努力寻找一种仅提取价格的方法。
这是代码:
@Override
public void onMessageReceived(MessageReceivedEvent event) {
String html;
System.out.println("I received a message from " +
event.getAuthor().getName() + ": " +
event.getMessage().getContentDisplay());
if (event.getMessage().getContentRaw().contains("!price")) {
String input = event.getMessage().getContentDisplay();
String item = input.substring(9).replaceAll(" ", "%20");
String URL = "https://www.google.lt/search?q=" + item + "%20price";
try {
html = Jsoup.connect(URL).userAgent("Mozilla/49.0").get().html();
html = html.replaceAll("[^\\ ,.£€eur0123456789]"," ");
} catch (Exception e) {
return;
}
System.out.println(html);
}
}
最大的问题是我使用的是谷歌搜索,所以价格在html
代码中的位置不同。有没有办法只能(numbers + EUR) or (a euro sign + price)
从 html 代码中提取?
解决方案
你可以很容易地做到这一点报废网站。这是一个简单的工作示例,可以使用JSOUP完成您正在寻找的工作:
public class Main {
public static void main(String[] args) {
try {
String query = "oneplus";
String url = "https://www.google.com/search?q=" + query + "%20price&client=firefox-b&source=lnms&tbm=shop&sa=X";
int pricesToRetrieve = 3;
ArrayList<String> prices = new ArrayList<String>();
Document document = Jsoup.connect(url).userAgent("Mozilla/5.0").get();
Elements elements = document.select("div.pslires");
for (Element element : elements) {
String price = element.select("div > div > b").text();
String[] finalPrice = price.split(" ");
prices.add(finalPrice[0] + finalPrice[1]);
pricesToRetrieve -= 1;
if (pricesToRetrieve == 0) {
break;
}
}
System.out.println(prices);
} catch (IOException e) {
e.printStackTrace();
}
}
}
那段代码将输出:
[347,10€, 529,90€, 449,99€]
如果您想检索更多信息,只需将 JSOUP 连接到Google Shop url,添加您想要的查询,然后使用 JSOUP 将其废弃。在这种情况下,我取消了 Google Shop for OnePlus 以检查其价格,但您也可以获得购买它的 url、完整的产品名称等。在这段代码中,我想检索在 Google Shop 中索引的前 3 个价格和将它们添加到字符串的 ArrayList 中。然后在将它添加到 ArrayList 之前,我将检索到的文本按“空格”分割,这样我就得到了我想要的信息,即价格。
这是一个简单的报废示例,如果您需要其他任何内容,请随时询问!如果您想了解更多关于使用 JSOUP 进行报废的信息,请查看此链接。
希望这对您有所帮助!
推荐阅读
- regex - 正则表达式,将字符串拆分为数组 vb.net
- swift - SwiftUI - 使用 var 引用创建布局时出错
- installation - 安装 PHP 7.4 遇到“未满足的依赖项”,如何解决?
- web - 网络通知,哪些高流量网站正在使用它们?(的清单...)
- vue.js - 如何从 v-btn 触发 v-input-file
- python - 使用线程在后台加载东西
- huawei-mobile-services - 为什么 React Native 中的 HMS Location Kit 给出 java.lang.NullPointerException:Attempt to invoke virtual method 'android.location.Location.toString()'?
- reactjs - 打字稿解析 - 在条件语句之外给出错误
- python - 通过数据框中最相似的字符串对所有行和列进行排序
- python - 在另一个类中的函数中读取使用打开文件对话框创建的变量