2016-07-04 3 views
2

私はうまくいかなかったようなものを考え出しました。私はキーワードだけを含んでいるテキストを抽出しようとしています。ウェブページにはそのキーワードがあるからです。JSoupを使用して必要なキーワードを含むWebページのテキストのみを取得するにはどうすればよいですか?

String pconcat=""; 

for (i = 0; i < urls.length; i++) { 

Document doc=Jsoup.connect(urls[i]).ignoreContentType(true).timeout(60*1000).get(); 

     for(int x=0;x<keyWords.length;x++){ 
     if(doc.body().text().toLowerCase().contains(keyWords[x].toLowerCase())){ 
       Elements e=doc.select("body:contains("+keyWords[x]+")"); 
       for(Element element : e) 
       { 
       pconcat+=element.text(); 
       System.out.println("pconcat"+pconcat); 
      }  
     } 
     } 
     } 

私が探しキーワードは「文書」の場合は、example.comを考えてみましょう「このドメインは文書での説明の例に使用されるように確立されている。」と、私は出力を必要としますその他

+0

検索しようとしている入出力の例です。今のところ、この結果をどのように制限したいのかはわかりません。 – Pshemo

+0

あなたは既にページからのテキストを持っているので、単にすべての文章を繰り返し、あなたが探している単語を含むものを選ぶだけです。これは役に立ちます:http://stackoverflow.com/a/2687929/1393766 – Pshemo

+0

実際には、特定のウェブページをクロールして特定のキーワードと一致するコンテンツを取得しようとしています。あなたのアプローチはこのページではうまくいきましたが、すべてのことがわかりません。 Cozとexample.comの2つの文があります。リンク、メニュー、タブを持つランダムなWebページを考えてみてください。このアプローチは価値があると思われます。何か案が? – Lalitha

答えて

0

:containsセレクタを使用するために本文を小文字にする必要はありません。大文字と小文字は区別されません。

指定されたテキストを含む要素。検索では大文字小文字の区別がありません。 見つかった要素、またはその子孫の 子孫のいずれかにテキストが表示されることがあります。

select()は、一致するものが見つかった場合にのみ要素を返します。

(いずれも一致場合は空)クエリにマッチする要素

あなたはちょうどその一致した任意の要素を選択するために、CSSセレクタを使用し、「ドキュメント」をチェックするためにif -statementを必要としません結果と何かをしなさい。このドメインは 文書で説明例に使用するために設立され

Document doc = Jsoup 
      .connect(url) 
      .ignoreContentType(true) 
      .timeout(60*1000) 
      .get(); 

    for (String keyword : keywords) { 

     String selector = String.format(
       "p:contains(%s)", 
       keyword.toLowerCase()); 

     String content = doc 
       .select(selector) 
       .text(); 

     System.out.println(content); 

    } 

出力

。事前に 調整または許可を求めることなく、このドメインを例に使用することができます。

関連する問題