如何将联机HTML页面列表中的字符串发送到Java数组?
我是Java新手。目前,我有一个数组,其中包含许多值,是我从html页面手动复制的。 这些值只是一个名称列表,我使用从不断更新的html页面中出现的搜索过滤器查找这些名称。 我需要帮助找到一种方法来维护它,以便我的应用程序通过GET请求连接到html页面,并自动获取这些值填充数组(最好将大数组存储在单独的文件中),而不是我每次都更新它 假设这是我在搜索框中查找意大利食品时HTML页面中的列表:如何将联机HTML页面列表中的字符串发送到Java数组?,java,html,arrays,Java,Html,Arrays,我是Java新手。目前,我有一个数组,其中包含许多值,是我从html页面手动复制的。 这些值只是一个名称列表,我使用从不断更新的html页面中出现的搜索过滤器查找这些名称。 我需要帮助找到一种方法来维护它,以便我的应用程序通过GET请求连接到html页面,并自动获取这些值填充数组(最好将大数组存储在单独的文件中),而不是我每次都更新它 假设这是我在搜索框中查找意大利食品时HTML页面中的列表: 披萨 面食 水饺 等等 我的数组是 String[]foodNames={“比萨饼”、“意大利面”
- 披萨
- 面食
- 水饺
- 等等
String[]foodNames={“比萨饼”、“意大利面”、“馄饨”…}
这并不相关,但我附加了我的代码作为上下文,它对您不起作用,因为cookie值和网站都是伪值。
我希望我的解释有道理。
提前谢谢
public static void main(final String[] args) throws Exception {
//String to store all food names
String[] foodNames = {"Pizza", "Pasta", "Ravioli" ...};
//Webpage cookie to connect to webpage that requires login
String cookie ="12345678912345678";
for(String foodName : foodNames){
System.out.println("-------------------" + foodName + "--------------------");
//Get url
URL foodRecipeUrl = new URL("https://horriblefoodrecipeslol.com/italian" + foodNames + "/+/ingredients/calories" );
//Send request
HttpURLConnection conn = (HttpURLConnection) foodRecipeUrl.openConnection();
conn.setRequestProperty("Cookie", cookie);
conn.setRequestMethod("GET");
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder result = new StringBuilder();
while ((line = rd.readLine()) != null) {
result.append(line);
}
rd.close();
//Filter out special characters
String plainText = result.toString().replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", "");
if(plainText.contains("pesto")){
System.out.print("This recipe is Italian");
}
} catch (FileNotFoundException e){
System.out.println(String.format("No food for you", foodName));
continue;
}
}
}
}
publicstaticvoidmain(最终字符串[]args)引发异常{
//字符串来存储所有食物名称
字符串[]foodNames={“比萨饼”、“意大利面”、“馄饨”…};
//连接到需要登录的网页的网页cookie
字符串cookie=“1234567892345678”;
for(字符串foodName:foodNames){
System.out.println(“--------------”+foodName+“--------------”);
//获取url
URL foodRecipeUrl=新URL(“https://horriblefoodrecipeslol.com/italian“+食品名称+”/+//成分/卡路里”);
//发送请求
HttpURLConnection conn=(HttpURLConnection)foodRecipeUrl.openConnection();
conn.setRequestProperty(“Cookie”,Cookie);
conn.setRequestMethod(“GET”);
试一试{
BufferedReader rd=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
弦线;
StringBuilder结果=新建StringBuilder();
而((line=rd.readLine())!=null){
结果。追加(行);
}
rd.close();
//过滤掉特殊字符
字符串明文=result.toString().replaceAll(“(?s)]*>(\\s*]*>)*”,“”);
if(明文包含(“pesto”)){
系统输出打印(“此配方为意大利语”);
}
}catch(filenotfounde异常){
System.out.println(String.format(“没有食物给你”,foodName));
继续;
}
}
}
}
可能是一个简单的例子,使用Jsoup可以帮助您开始以下网站:
输出:
Super-quick fresh pasta
Buddy's Bolognese
Beautiful courgette carbonara
Broccoli & anchovy orecchiette
Spaghetti with anchovies, dried chilli & pangrattato
Epic vegan lasagne
Danny Devito's family pasta
Amazing ravioli
Rolled cassata
Amalfi lemon tart
...
页面是静态的还是有一些JavaScript代码在加载初始页面后添加内容?@Eritrean是的,它基本上只是一个由其他人不断更新的网站,当我使用搜索过滤器(例如“recipes”)查找时,我试图从页面中获取值然后你可以看一看HTML解析器,它可以用来从页面中提取所需的数据谢谢,我最终使用了一个名为jsonsimple的库,但是你的建议非常有助于我找到正确的方向。
Super-quick fresh pasta
Buddy's Bolognese
Beautiful courgette carbonara
Broccoli & anchovy orecchiette
Spaghetti with anchovies, dried chilli & pangrattato
Epic vegan lasagne
Danny Devito's family pasta
Amazing ravioli
Rolled cassata
Amalfi lemon tart
...