我正在处理非常原始的 HTML 结构,如下所示:
<a NAME="header1"></a><b><font face="Verdana, Serif"><font color="#000000"><font size=+1>Hygiene</font></font></font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Shampoo</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000"></font>Soap</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Deodorant</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Toothpaste</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000"></font>Brush</font></b>
<a NAME="header2"></a><b><font face="Verdana, Serif"><font color="#000000"><font size=+1>Food</font></font></font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Meat</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Vegetables</font></b>
<p><b><font face="Verdana, Serif"><font color="#000000">Fruit</font></b>
现在的问题是,我想从卫生标题(顶部)中获取所有项目,它们是洗发水、肥皂、除臭剂、牙膏、刷子(现在把它们放在 HashMap> 中)。
我使用这个 XPath 来获取标题(卫生和食品):
//html/body//b/font/font/font
它工作正常,我得到了我需要的东西。
然后我使用这个 XPath 来收集项目:
//html/body//p/b/font/font
对于所有项目。所以这个(最后一个)XPath 会从所有项目中返回一个列表,这些项目是 [洗发水、肥皂、除臭剂、牙膏、刷子、肉类、蔬菜、水果]。问题是我不知道什么时候停止将项目放在第一个列表中(比如,当另一个标题开始时,在这种情况下是 Food,创建新列表并将 Food 项目放在那里)。我可以使用此 XPaths 获得的只是标题(卫生、食品)和两个列表中的所有项目(不是单独的)的值。
我需要得到类似的东西:
- 地图{“卫生”,[洗发水,肥皂,除臭剂,牙膏,刷子]}
- 地图{“食物”,[肉类、蔬菜、水果]}
所有项目都像这样抛出,它们不在单独的 div 或 span 中,以便我可以识别新标题何时出现。
谢谢!