2016-11-07 17 views
0

から情報を得る:Jsoup私はJsoupで、この情報を取得したいスパンクラス

Document doc = Jsoup.connect("https://translate.google.bg/?hl=bg#en/tr/abbreviated") 
        .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6") 
        .get(); 

Elements newsHeadlines = doc.select("#result_box > span"); 

for(Element e : newsHeadlines){ 
    System.out.println(e.toString()); 
} 
+1

あなたは、通話後にajax経由でコンテンツが生成されていませんか?ドキュメントを印刷すると、その要素が表示されますか? –

+0

実際には、それはajax経由で生成されます。なぜなら、ドキュメント全体を印刷すると、私は必要な要素を印刷しないからです。// – imoteb

+0

http://stackoverflow.com/questions/14414876/python-scraping-fb-comments-from-ウェブサイトはこれと同様の問題です。 http://www.kochi-coders.com/2014/05/06/scraping-a-javascript-enabled-web-page-using-beautiful-soup-and-phantomjs/これがあなたを助けるかもしれない! –

答えて

1

翻訳をその: enter image description here

私はここに単語kisaltilmisとを取得する必要がありますが、私がこれまで試してみましたものです取得しようとしているAJAX呼び出しを介して生成されます。したがって、この情報はページソースには見つかりませんでした。

実際のクエリはhttps://translate.google.bg/translate_a/singleになります。それは残念ながら、それが原因コンマの間に欠損値に、有効なJSONファイルではありませんので、情報を手動で抽出する必要があり、次の

[[["kısaltılmış","abbreviated",,,0],... 

のように見えるファイルを返します。ここで

はあなたがあまりにも頻繁に翻訳を取得しようとした場合、Googleはあなたが、APIをGoogle翻訳の利用のためのお金を充電し、そのことを、サーバー

System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
final String query = "abbreviated"; 
final String urlPrefix = "https://translate.google.bg/translate_a/single?client=t&sl=en&tl=tr&hl=bg&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=bh&ssel=0&tsel=0&kc=1&tk=811697.665342&q="; 
try (final InputStream stream = new URL(urlPrefix + URLEncoder.encode(query, "UTF-8")).openStream()) { 
    final String line = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)).readLine(); 
    System.out.println(line); 
} 

お知らせから情報をロードするコードスニペットですおそらく、禁止されるでしょう。

+0

'、'をスペースで置き換えれば、有効なJSONが得られます。 – TDG

+0

@TGDこのAPIは文書化されていないため、他の問題が発生する可能性があります。ルールをエスケープする。とにかく、前処理は一種の「手動抽出」です。 – kgeorgiy

関連する問題