2017-10-24 3 views
-1

こんにちは、私はJSOUPを使用してウェブサイトを削り取る必要があります。私はキーと値のペアを出力する必要があります。JSOUPデータを削る

package com.jaysons; 
import java.io.IOException; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

public class ScrapeBody { 
public static void main(String[] args) throws IOException{ 
String url = "https://www.cpsc.gov/Recalls?field_rc_date_value%5Bmin%5D&field_rc_date_value%5Bmax%5D&field_rc_heading_value=&field_rc_hazard_description_value=&field_rc_manufactured_in_value=&field_rc_manufacturers_value=&field_rc_number_value="; 
Document doc = Jsoup.connect(url).get(); 

Elements content = doc.select("div.views-field views-field-php");  
doc = Jsoup.parse(content.html().replaceAll("</div>", "</div><span>") 
.replaceAll("<div", "</span><div")); 
Elements labels = doc.select("div.remedy"); 
for (Element label : labels) { 
System.out.println(String.format("%s %s", label.text().trim(),                      
label.nextElementSibling().text())); 
} 
}   
} 

私は
日のようなキーと値のペアで出力を必要とする:
私はsrapeする必要があるURLは、私が書いたコードがあるhttps://www.cpsc.gov/Recalls?field_rc_date_value%5Bmin%5D&field_rc_date_value%5Bmax%5D&field_rc_heading_value=&field_rc_hazard_description_value=&field_rc_manufactured_in_value=&field_rc_manufacturers_value=&field_rc_number_value=

である2017年10月20日
救済:
単位:
ウェブサイト:http://www.bosch-home.com/us
電話:(888)965から5813

私は間違いをどこにしたか教えてください

+0

これまでに何を試しましたか?あなたの質問は何ですか? StackOverflowはコード作成サービスではありません。どこから始めたらいいか分からない場合は、[cookbook](https://jsoup.org/cookbook/)などのプロジェクトドキュメントをチェックすることができます。 – ventiseis

+0

私は多くのバージョンを試してみましたが、何も動作していないようですので、私はいくつかの助けを求めていました - ventiseis – vyas

+0

あなたが試したことを示してください。 – sina

答えて

0

content変数の値を再割り当てして再解析する必要はありません。

Elements content = doc.select("div.views-field >span"); 
for (Element viewField : content) { 
    /* 
     each viewField corresponds to one 
     <div class="views-field views-field-php"> 
      <span class="field-content"> 
      <a href="/Recalls/2018/BSH-Home-Appliances-amplía-retiro-del-mercado-de-lavavajillas"> 
      <div class="date"> 
       October 20, 2017 
      </div> 
      ... 
      </span> 
     </div> 
    */ 
    Elements divs = viewField.getElementsByTag("div"); 
    for (Element div : divs) { 
     String className = div.className(); 
     if (className.equals("date")) { 
     // store and extract date 
     } else if (className.equals("...")) { 
     // do something else 
     } // else... 
    } 
} 

だけでなく、あなたがタグによってサブ要素を選択するだけでなく、名前によって、いくつかの属性などによって詳細は、公式ドキュメントを参照してくださいすることができますhttps://jsoup.org/cookbook/extracting-data/dom-navigation

免責事項:私は今のコードをテストすることができませんでした。

+0

このコードはうまく動作していませんでした。さらに、キー値のペアで出力を取得する必要がありましたが、ここでは機能しませんでした。 – vyas

+0

2番目(内側)のループ内でキー値のペアを作成できます。 'className'が' date'と等しければ、日付のキーと値のペアを作成し、 'remedy'と等しければ、救済情報を抽出し、そのデータなどのキーと値のペアを作成します。あなたの問題の完全な解決策ではありませんが、正しい方向にあなたを導くのに十分なはずです。 – sina

+0

yupppp助けてくれてありがとう、私はそれを得て、それはうまく働いていた@sina – vyas