質問

私はここ数週間JSOUPを使用して、Webページからデータを正常にスクレープすることに成功しています。しかし、私はテキスト全体ではなく、クラスのタグ内から1つの単語を抽出する方法を把握しようとする際に行き止まりになりました。

これが私が使用しているJavaコードです:

// store all the search results in the elmAllSearchResults element
Element elmAllSearchResults = doc.getElementById("SearchResults"); 
// extract the detDesc class from elmAllSearchResults
Elements elmSize = elmAllSearchResults.getElementsByClass("desc");

これに類似した複数の行を抽出するには:

<font class="desc">Date 11-04; 09:21, Size 8100.00 MB, User <a class="desc" href="/member/aUser/" title="Browse">
<font class="desc">Date 12-04; 09:21, Size 62 MB, User <a class="desc" href="/member/bUser/" title="Browse">

しかし、この一連のテキストからサイズ(この場合は8100.00 MB、および62 MB)を抽出することだけです。どんなタグにも包まれても、サイズは簡単に識別できないため、それを取得する方法を見つけることができないようです。

出来ますか?

ありがとうございました。

役に立ちましたか?

解決

JSOUPは、個々のHTML要素に到達するまでのみです。あなたが彼らのテキスト体を解析したい場合、それは本質的に Strings、それからあなたはつかむ必要があります String ベースの方法 代わりに substring(), indexOf(), replaceAll(), 、など

たとえば、目的の情報が常に間にあることを保証できる場合 ", Size "", User", 、次に、サブストリングする必要があります String それについて:

String before = ", Size ";
String after = ", User";

for (Element element : elements) {
    String text = element.text();
    String size = text.substring(text.indexOf(before) + before.length(), text.indexOf(after));
    // ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top