単純なWebサイトを解析し、そのWebサイトから情報を取得したい。
DocumentBuilderFactoryを使用してXMLファイルを解析していました。htmlファイルに対しても同じことをしようとしましたが、常に無限ループに陥りました。
URL url = new URL("http://www.deneme.com");
URLConnection uc = url.openConnection();
InputStreamReader input = new InputStreamReader(uc.getInputStream());
BufferedReader in = new BufferedReader(input);
String inputLine;
FileWriter outFile = new FileWriter("orhancan");
PrintWriter out = new PrintWriter(outFile);
while ((inputLine = in.readLine()) != null) {
out.println(inputLine);
}
in.close();
out.close();
File fXmlFile = new File("orhancan");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
NodeList prelist = doc.getElementsByTagName("body");
System.out.println(prelist.getLength());
何が問題ですか?または、特定のhtmlタグのWebサイトからデータを取得する簡単な方法はありますか?
これを行うには、はるかに簡単な方法があります。 JSoup を使用することをお勧めします。 JSoupを使用すると、次のようなことができます
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
または、体が必要な場合:
Elements body = doc.select("body");
または、すべてのリンクが必要な場合:
Elements links = doc.select("body a");
接続を取得したり、ストリームを処理したりする必要はなくなりました。シンプル。 jQueryを使用したことがある場合、それは非常によく似ています。
間違いなく JSoup が答えです。 ;-)
HTMLは常に有効で、適切にフォーマットされたXMLとは限りません。 XMLパーサーの代わりに特別なHTMLパーサーを試してください。いくつかの異なるものが利用可能です: