解析HTML页面

时间:2017-05-23 23:24:35

标签: java html jsoup

我的任务是解析HTML页面以检索访问该页面的人的用户名。用户名将列在HTML页面上,但可能位于不同人员的不同位置。我想知道其他人如何解决这个问题。

我计划使用JSoup来解析HTML页面并使用关键字来查找名称所在的位置,但是这可能不起作用,因为每个人的每个页面都不同,因此相同的关键字可以位于不同的位置。

1 个答案:

答案 0 :(得分:0)

下午好,阿纳夫,

前段时间我有一个客户要求我编写一个系统来解析(写得非常糟糕)用Java编写的html文件。由于缺乏一致性,我必须构建类来遍历文件并手动查找关键字/ HTML标记。

就个人而言,我会选择JSoup进行解析。请参阅下面的代码示例。

    // Get all data from HTML file =============================
    public Object[] parseTag(String tag) {                  // =
        Document doc;                                       // =
        try {                                               // =
            File input = new File(this.Path);               // =
            doc = Jsoup.parse(input, "UTF-8", "");          // =
            Elements pTag = doc.getElementsByTag(tag);      // =
            Object[] pTagA = pTag.toArray();                // =
            return pTagA;                                   // =
        } catch (IOException e) {                           // =
            e.printStackTrace();                            // =
            return null;                                    // =
        }                                                   // =
    }                                                       // =
    // =========================================================

您可以调用此函数并将其传递给html标记,它将为文件/页面中该标记的每个实例返回一个对象数组。示例:parseTag(“a”);将返回页面上的所有链接。

示例:

我想从html文件中获取帐号。运行几个测试后,我发现帐号在标签内,并且是第6个实例。

    // Get Account Number ==================================================
    public String getAccountNumber() {                                  // =
        Object[] bTag = this.parseTag("font");                          // =
        String data = bTag[5].toString();                               // =
        data = data.replace("<font size=\"4\" color=\"white\">", "");   // =
        data = data.split("<br>")[0];                                   // =
        this.AccountNumber = data;                                      // =
        return data;                                                    // =
    }                                                                   // =
    // =====================================================================

我调用了该函数并删除了其他信息,直到获得数据为止。

你可以对JSoup进行一些研究,然后一起使用它直到它满足你的需求,但这是我过去做的,以获得类似的结果。

谢谢,