我一直在使用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);
}
}
答案 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块中获取它。