Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何搜索网页以查找特定文本_Java_Terminal - Fatal编程技术网

Java 如何搜索网页以查找特定文本

Java 如何搜索网页以查找特定文本,java,terminal,Java,Terminal,我目前正在编写一个类似于烹饪书的java程序。我做了所有的东西,但不幸的是,我没有食谱 我到处找了找,找到了。我查看了资料来源,找到了包含配料、食谱和营养成分的线条 我记得在终端中使用了grep,我很快发现lynx非常有用。这是我到目前为止所拥有的(示例页面) 要在第一次提到成分后获得100行:lynx-dump”http://allrecipes.com/Recipe/Potato-Crunchy-Tenders/| grep-n-a100“配料” 要获取“配料”的行号:lynx-dump”h

我目前正在编写一个类似于烹饪书的java程序。我做了所有的东西,但不幸的是,我没有食谱

我到处找了找,找到了。我查看了资料来源,找到了包含配料、食谱和营养成分的线条

我记得在终端中使用了
grep
,我很快发现
lynx
非常有用。这是我到目前为止所拥有的(示例页面)

要在第一次提到成分后获得100行:
lynx-dump”http://allrecipes.com/Recipe/Potato-Crunchy-Tenders/| grep-n-a100“配料”

要获取“配料”的行号:
lynx-dump”http://allrecipes.com/Recipe/Beef-Tips-and-Noodles/| grep-n“配料”| cut-f1-d:

我已经做了一些例子,发现食谱在“配料”行之后开始6行,每隔一行就有一种新配料,如下所示:

“135:配料[66]编辑并保存 136- 137-原始配方可制作6份[67]更改份数 138-制作6份(美国)米制[68]调整配方 139-([69]帮助) 140-*[] 141-1/2杯油炸植物油 142-*[] 143-1 1/2杯牛奶 144-*[] 145-1个鸡蛋 146-*[] 147-1包(7.6盎司)大蒜味即食土豆泥 "

我的目标是以某种方式获得一个文本文件中的成分,我可以用java进行解析(我很熟悉)。我希望对食谱做同样的事情

通过这种方式,我可以为许多食谱自动执行此操作,因此我不必手动获取所有这些

在java中有没有一种更容易实现的方法


干杯。

多亏了装满鳗鱼的气垫船,我观察了JSoup,它工作得非常好

今晚我已经解决了尽可能多的问题,下面是我想出的代码

要获取
增量列表
(扩展
数组列表
): 公共静态ListofIngreents GetListofIngreents(最终字符串html){

要获取
说明
(扩展
数组列表
):
公共静态指令getInstructions(最终字符串html){
指令指令指令=新指令();
试一试{
元素body=Jsoup.connect(html.get().body();
Element elem=body.getElementsByAttributeValue(“itemprop”,“recipeInstructions”).first();
对于(元素e:elem.getElementsByTag(“li”)){
增加说明(如text());
}
}捕获(IOE异常){
e、 printStackTrace();
}
返回仪表;
}


您可能需要解析网站的html,jsoup等工具可以帮助您。如果这是我的项目,我会用谷歌搜索,下载并尝试一下。
    ListOfIngredients tmp = new ListOfIngredients();
    try {
        Element body = Jsoup.connect(html).get().body();

        try {
            for (Element elem : body.getElementsByAttributeValue("itemprop", "ingredients")) {
                Elements ingredientAmtElements = elem.getElementsByClass("ingredient-amount");
                String amount = null;
                if (!ingredientAmtElements.isEmpty()) {
                    amount = ingredientAmtElements.first().text();
                }
                String ingredient = elem.getElementsByClass("ingredient-name").first().text();
                if (!ingredient.equals("\u00a0")) {
                    tmp.add(new Ingredient(amount, ingredient));
                }
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    return tmp;
}