2016-08-12 3 views
2

私はURLから添付画像の表に価格や日付をこすりしようとしています:**** http://www.airfrance.fr/vols/paris+tunis探しているデータを削ることはできませんか?

私は情報をこすりすることに成功したではなく、私は(日付を探しています方法+価格)。私はそれが下の写真のようにこのコードを実行すると、私にはいくつかの価格とanlyいくつかの日付ではなく、すべてのテーブルを与えるコード

import java.io.IOException; 

import javax.lang.model.element.Element; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Elements; 

public class Test { 
    public static void main(String[] args) { 
     Document doc; 
     try { 
      doc = Jsoup.connect("http://www.airfrance.fr/vols/paris+tunis").get(); 
      Elements links = doc.select("div"); 
      for (org.jsoup.nodes.Element e:links) { 
       System.out.println(e.text()); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

のこれらの行を使用していました。

enter image description here

あなたは私が私の研究プロジェクトのおかげでこの問題を解決するために喜ば助けることができます。

答えて

1

問題は、解析しているカレンダーが、サーバーから配信された元のソースコード(右クリック>ビューソース)にないことです。このテーブルは、ブラウザがページをレンダリングするときにJavaScriptを使用して生成されます(右クリック>検査)。

Jsoupはソースコードのみを解析できます。したがって、最初にHtmlUnitのようなものでページをロードし、次にこのページをJsoupに渡して渡す必要があります。

// load page using HTML Unit and fire scripts 
WebClient webClient = new WebClient(); 
HtmlPage myPage = webClient.getPage("http://www.airfrance.fr/vols/paris+tunis"); 

// convert page to generated HTML and convert to document 
Document doc = Jsoup.parse(myPage.asXml()); 

// find all of the date/price cells 
for(Element cell : doc.select("td.available.daySelection")) { 
    String cellDate = cell.select(".cellDate").text(); 
    String cellPrice = cell.select(".cellPrice > .day_price").text(); 
    System.out.println(
      String.format(
        "cellDate=%s cellPrice=%s", 
        cellDate, 
        cellPrice)); 
} 

// clean up resources   
webClient.close(); 

コンソール

cellDate=1 septembre cellPrice=302 € 
cellDate=2 septembre cellPrice=270 € 
cellDate=3 septembre cellPrice=270 € 
cellDate=4 septembre cellPrice=270 € 
cellDate=5 septembre cellPrice=270 € 
.... 

出典:Parsing JavaScript Generated Pages

+0

おかげで、あなたが本当に問題を取得するが、私はまだ私はあなたのコードを試してみましたwebClient.close()に問題があります。 –

+0

ソースコードを投稿してください。 –

+0

ここに投稿できません!悲しい、それは長すぎる。私はあなたにFacebookの要求を送った、またはあなたが私にあなたのメールを渡すことに気をつけなければ、私は感謝します。 –

関連する問題