2

現在、WebページからHTMLコードの次のセクションがあります。

<td class="movieclass">
<b>Cinema 1</b>
    10.30 AM. + 12.45 + 3.00 + 5.15 + 7.30 + 9.45 + 12.00 MN.
<br />

<b>Cinema 2</b>
    3.00 + 5.15 + 7.30 + 9.45 + (12.00 MN. THRS./FRI.)
<br />

<b>Cinema 3</b>
    2.30 + 4.45 + 7.00 + 9.15  + (12.15 PM. + 11.30 PM. THRS./FRI.)
<br />

<b>Cinema 4</b>
    11.30 AM. + 2.00 + 4.30 + 7.00 + 9.30 + 12.00 MN.
<br />

<b>Cinema 5</b>
    10.30 AM. + 1.00 + 3.30 + 6.00 + 8.30 + 11.00 PM.
<br />
</td>

私はjsoupを使用して時間を抽出しようとしていますが、特定の映画館用です。タイムラインが段落(pタグ)内にある場合は、以下を使用して抽出できると思います。

Elements movieTime = doc.select("a:contains(Cinema 3) + p");

ただし、上記のコードでは、時間のある行の前後にタグがありません。特定の映画のタイムラインを抽出する方法はありますか?

4

2 に答える 2

0

提供したドキュメントが常に同じ構造を保持している場合は、これを手動で行う方法が常にあります。次に、すべてのドキュメントをある種のリストに簡単に読み取ることができます。たとえば、ArrayList。

次に、そのリストを繰り返し処理し、ifステートメントを使用して確認します

if (line.get(0).equals("Cinema 1")) {
  timeOfCinema1 = line.get(1);
} 

しかし、これは最も単純で、これを行うための「良い」方法ではありません。を使用Map<String, String>して線をマッピングしたり、ドキュメントの構造を保持するオブジェクトを作成したりできます。

お役に立てれば。

于 2012-05-18T20:05:29.953 に答える
0

ページのHTMLを使用してjsoupドキュメントを作成することにしました。

String doc = Jsoup.connect("http://www.example.com").get().html();

次に、ドキュメントで文字列を置き換えました。

doc = doc.replaceAll("<b>","<p>");
doc = doc.replaceAll("</b>","</p><p>");

ドキュメント全体を処理しているため、置換は少し極端に思えますが、抽出する必要のあるセクションの周りにいくつかのタグが必要です。最後に抽出:

Document newDoc = Jsoup.parse(doc);
String movieTimes = newDoc.select("p:contains(Cinema 2) + p").text();
System.out.println(movieTimes); //Should print only text within <p> after Cinema 2
于 2012-05-21T07:58:13.313 に答える