Jsoup无法从网页上提取股票价格

时间:2011-07-02 14:45:24

标签: java jsoup

我一直在使用Jsoup从股票交易网站中提取股票价格。股票价格定期自动更新。我尝试过使用烹饪书中给出的例子,但是没有运气,请帮助我......

以下是我试过的......

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 个答案:

答案 0 :(得分:2)

股票价格似乎存储在ID为ltpid的范围内。因此,使用#ltpid选择器就足够了。您的选择器尝试查找具有类.f22的祖先的范围,该类具有标识为ltpid的祖先。

阅读http://jsoup.org/apidocs/org/jsoup/select/Selector.html以获取有关选择器的说明。

编辑:

但是您遇到第二个问题:此范围不在您加载的文档中。它位于iframe中,其中包含以下网址:http://money.rediff.com/money1/current_stat.php?companyCode=17020281

尝试使用此网址而不是您正在使用的网址,它会起作用。

答案 1 :(得分: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块中获取它。