私は次のような非常に原始的な 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>
ここで、Hygiene ヘッダー (上部) からすべての項目 (シャンプー、石鹸、デオドラント、歯磨き粉、ブラシ) を取得したいと考えています (ここではそれらを HashMap> に入れます)。
この XPath を使用してヘッダー (Hygiene と Food) を取得します。
//html/body//b/font/font/font
そしてそれはうまくいきます、私は必要なものを手に入れます。
次に、この XPath を使用してアイテムを収集します。
//html/body//p/b/font/font
すべてのアイテム。したがって、この (最後の) XPath は、[シャンプー、石鹸、デオドラント、歯磨き粉、ブラシ、肉、野菜、果物] のすべての項目からリストを返します。問題は、最初のリストにアイテムを配置するのをいつ停止するかがわからないことです (別のヘッダーが開始されたとき、この場合は Food で、新しいリストを作成してそこに Food アイテムを配置するなど)。この XPath で取得できるのは、ヘッダー (Hygiene、Food) の値と、両方のリスト (個別ではない) のすべての項目だけです。
次のようなものを取得する必要があります。
- Map{"衛生", [シャンプー、石鹸、デオドラント、歯磨き粉、ブラシ]}
- Map{"食品", [肉、野菜、果物]}
すべてのアイテムはこのようにスローされ、個別の div またはスパンにはないため、新しいヘッダーがいつ発生したかを認識できます。
ありがとう!