2011-07-02 10 views
0

私はJsoupを株取引ウェブサイトから株価を抽出するために使用しています。株価は定期的に自動的に更新されます。私はJsoup cant Webページから株価を抽出

import java.io.IOException; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 


public class sup { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 
     String url="http://money.rediff.com/companies/selan-exploratio/17020281"; 
     Document doc = Jsoup.connect(url).get(); 
     String quote = doc.select("#ltpid .f22 span").first().text(); 
     System.out.println(quote); 
    } 
} 

答えて

2

株価...

は、私が試したものです...料理に与えられた例を使用してみましたが,,しかし、運が私を助けてください持っていませんID ltpidのスパンに格納されているようです。したがって、 #ltpidセレクタを使用すれば十分です。あなたのセレクタは、IDが ltpidの祖先を持つクラス .f22を持つ祖先を持つスパンを見つけようとします。

セレクタの説明については、http://jsoup.org/apidocs/org/jsoup/select/Selector.htmlを参照してください。

EDIT:

あなたはしかし、第二の問題を持っている:このスパンは、あなたが読み込まれているドキュメント内ではありません。これはiframe内にあり、次のURL:http://money.rediff.com/money1/current_stat.php?companyCode=17020281を持っています。

使用しているURLの代わりにこのURLを試してみるとうまくいきます。

+0

私は '#ltpid'だけを使ってみましたが、nullポインタの例外が出ます。 – Jonah

+1

私は自分の答えを編集して理由を教えました。 –

+0

+1クール。あなたはそのページをどのように知っていますか? – zawhtut

0
 public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 

     Document doc = Jsoup.connect("http://money.rediff.com/companies/selan-exploratio/17020281").get(); 
     String javaScript = doc.select(".m_sectionright script").first().toString(); 
     String regStr = "iValue\\s*=\\s*\\d+\\.?\\d*"; 
     Pattern p = Pattern.compile(regStr); 
     Matcher matcher = p.matcher(javaScript); 
     while (matcher.find()) { 
       System.out.println(matcher.group().replace("iValue = ","")); 
       break; 
     } 
    } 

最も簡単な方法は、javascriptブロックから取得することです。