Web スクレイピングを用いたリアルタイム日経平均株価の取得
Tidy による整形式化および DOM に対して XPath を用いることで日経平均や為替の値を得る.
// Yahoo!ファイナンスのページをスクレイピングして,日経平均株価等を抽出する. import java.io.*; import java.net.URL; import org.w3c.tidy.Tidy; import org.w3c.dom.Document; import javax.xml.xpath.*; public class tidy { public static void main(String[] args){ try { //Yahoo!ファイナンスの URL URL url = new URL("http://finance.yahoo.co.jp/"); //Tidy の設定 // [参考] http://www.ibm.com/developerworks/jp/java/library/j-jtp03225/index.html?ca=drs- Tidy tidy = new Tidy(); tidy.setShowWarnings(false); tidy.setQuiet(true); // Tidy を利用して DOM document を取得 Document doc = tidy.parseDOM(url.openStream(), null); ////////////////////////////////////////////////// // XPath用のファクトリ生成 XPathFactory xpf = XPathFactory.newInstance(); // XPathオブジェクトの生成 XPath xpath = xpf.newXPath(); // XPath 表現:日経平均株価 String expressionNikkei = "//div[@class='ymuiContainer ymuiBodyBorder yjSt']/div[@class='lineFi2 marB4']/div[@class='header'][@id='one-header']/dl[@class='pad4 clearfix']/dd[@class='ymuiEditLink mar0']/strong"; // XPath 表現:NYダウ String expressionNYDow = "//div[@class='ymuiContainer ymuiBodyBorder yjSt']/div[@class='lineFi2 marB4']/div[@class='header'][@id='two-header']/dl[@class='pad4 clearfix']/dd[@class='ymuiEditLink mar0']/strong"; // XPath 表現:米ドル/円 String expressionYenDoll = "//div[@class='ymuiContainer ymuiBodyBorder yjSt']/div[@class='lineFi2 marB4']/div[@class='header'][@id='five-header']/dl[@class='pad4 clearfix']/dd[@class='ymuiEditLink mar0']/strong"; // XPath 表現:ユーロ/円 String expressionYenEuro = "//div[@class='ymuiContainer ymuiBodyBorder yjSt']/div[@class='lineFi2 marB4']/div[@class='header'][@id='six-header']/dl[@class='pad4 clearfix']/dd[@class='ymuiEditLink mar0']/strong"; // XPath 表現を評価して日経平均の値を得る String nikkei = (String) xpath.evaluate(expressionNikkei, doc, XPathConstants.STRING); System.out.println(nikkei); // XPath 表現を評価して NY ダウの値を得る String nydau = (String) xpath.evaluate(expressionNYDow, doc, XPathConstants.STRING); System.out.println(nydau); // XPath 表現を評価してドル/円の値を得る String doll = (String) xpath.evaluate(expressionYenDoll, doc, XPathConstants.STRING); System.out.println(doll); // XPath 表現を評価してユーロ/円の値を得る String euro = (String) xpath.evaluate(expressionYenEuro, doc, XPathConstants.STRING); System.out.println(euro); } catch(Exception e){ e.printStackTrace(); } } }