如何将联机HTML页面列表中的字符串发送到Java数组?

如何将联机HTML页面列表中的字符串发送到Java数组?,java,html,arrays,Java,Html,Arrays,我是Java新手。目前,我有一个数组,其中包含许多值,是我从html页面手动复制的。 这些值只是一个名称列表,我使用从不断更新的html页面中出现的搜索过滤器查找这些名称。 我需要帮助找到一种方法来维护它,以便我的应用程序通过GET请求连接到html页面,并自动获取这些值填充数组(最好将大数组存储在单独的文件中),而不是我每次都更新它 假设这是我在搜索框中查找意大利食品时HTML页面中的列表: 披萨 面食 水饺 等等 我的数组是 String[]foodNames={“比萨饼”、“意大利面”

我是Java新手。目前,我有一个数组,其中包含许多值,是我从html页面手动复制的。 这些值只是一个名称列表,我使用从不断更新的html页面中出现的搜索过滤器查找这些名称。 我需要帮助找到一种方法来维护它,以便我的应用程序通过GET请求连接到html页面,并自动获取这些值填充数组(最好将大数组存储在单独的文件中),而不是我每次都更新它

假设这是我在搜索框中查找意大利食品时HTML页面中的列表:

  • 披萨
  • 面食
  • 水饺
  • 等等
我的数组是
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
...