我的任务是解析HTML页面以检索访问该页面的人的用户名。用户名将列在HTML页面上,但可能位于不同人员的不同位置。我想知道其他人如何解决这个问题。
我计划使用JSoup来解析HTML页面并使用关键字来查找名称所在的位置,但是这可能不起作用,因为每个人的每个页面都不同,因此相同的关键字可以位于不同的位置。
答案 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进行一些研究,然后一起使用它直到它满足你的需求,但这是我过去做的,以获得类似的结果。
谢谢,
添