2011-07-02 4 views
0

증권 거래소 웹 사이트에서 Jsoup를 사용하여 주가를 추출했습니다. 주가는 정기적으로 자동 갱신됩니다. 나는웹 페이지에서 Jsoup cant의 주가가

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을 참조하십시오.

편집 :

당신은 비록 두 번째 문제가이 범위는로드 한 문서에 있지. 다음 URL을 가진 iframe 안에 있습니다 : 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; 
     } 
    } 

가장 쉬운 방법은 자바 스크립트 블록에서 가져 오는 것입니다.