HiiHahWIKI - making some notes for... -
Java:jerichoを使ってHTMLをパースする
をテンプレートにして作成
開始行:
[[FrontPage]]
*Java:jerichoを使ってHTMLをパースする [#hb52f50c]
Rhino+JQueryでHTMLをスクレイピングしようと考えていたんだ...
-[[Rhino:jQueryでメモリリーク?]]
jerichoなんか、HTMLだけじゃなくて、XMLのパースにも便利に...
HTMLも不完全なものもちゃんとパースできるみたいです。
***準備 [#y3789815]
以下のURLより、jerichoのアーカイブをDLして、「dist」ディ...
-http://sourceforge.net/projects/jerichohtml/files/
ちなみに、公式ページはこちら
-http://jericho.htmlparser.net/docs/index.html
JavaDocはこちら
-http://jericho.htmlparser.net/docs/javadoc/index.html
***ソースコード [#q7c72ceb]
当ページの一覧ページからコンテンツページのリンク(aタグ)...
■HtmlParserSample.java
package etc;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.Source;
public class HtmlParserSample {
/**
* @param args
* @throws IOException
* @throws MalformedURLException
*/
public static void main(String[] args) throws Malformed...
// TODO 自動生成されたメソッド・スタブ
Source html = new Source(new URL("http://www.hiihah.in...
//XMLを相手にするなら下記を記述
html.fullSequentialParse();
Element body = html.getElementById("body");
List<Element> aList = html.getAllElements("a");
List<Element> targetList = new ArrayList<Element>();
for (Element element : aList){
if (isTarget(element)){
System.out.println(element.getTextExtractor() + "\t"...
targetList.add(element);
}
}
Source targetPage = null;
for (Element element : targetList){
targetPage = new Source(new URL(element.getAttributeV...
System.out.println(targetPage.getElementById("body")....
}
}
/**
* 一覧ページのうち、コンテンツのリンクである場合はtrue...
* @param element
* @return
*/
public static boolean isTarget(Element element){
if (element.getParentElement().getName() == "li" &&
element.getParentElement().getParentElement().getNam...
element.getParentElement().getParentElement().getPar...
element.getParentElement().getParentElement().getPar...
){
return true;
}
return false;
}
}
いやー、ほんと簡単ですなw
これは便利。
***外部リンク [#ld83ddcc]
最初にこの記事を読みました。
-http://d.hatena.ne.jp/talisker_ZQN/20100801/1280651267
終了行:
[[FrontPage]]
*Java:jerichoを使ってHTMLをパースする [#hb52f50c]
Rhino+JQueryでHTMLをスクレイピングしようと考えていたんだ...
-[[Rhino:jQueryでメモリリーク?]]
jerichoなんか、HTMLだけじゃなくて、XMLのパースにも便利に...
HTMLも不完全なものもちゃんとパースできるみたいです。
***準備 [#y3789815]
以下のURLより、jerichoのアーカイブをDLして、「dist」ディ...
-http://sourceforge.net/projects/jerichohtml/files/
ちなみに、公式ページはこちら
-http://jericho.htmlparser.net/docs/index.html
JavaDocはこちら
-http://jericho.htmlparser.net/docs/javadoc/index.html
***ソースコード [#q7c72ceb]
当ページの一覧ページからコンテンツページのリンク(aタグ)...
■HtmlParserSample.java
package etc;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import net.htmlparser.jericho.Element;
import net.htmlparser.jericho.Source;
public class HtmlParserSample {
/**
* @param args
* @throws IOException
* @throws MalformedURLException
*/
public static void main(String[] args) throws Malformed...
// TODO 自動生成されたメソッド・スタブ
Source html = new Source(new URL("http://www.hiihah.in...
//XMLを相手にするなら下記を記述
html.fullSequentialParse();
Element body = html.getElementById("body");
List<Element> aList = html.getAllElements("a");
List<Element> targetList = new ArrayList<Element>();
for (Element element : aList){
if (isTarget(element)){
System.out.println(element.getTextExtractor() + "\t"...
targetList.add(element);
}
}
Source targetPage = null;
for (Element element : targetList){
targetPage = new Source(new URL(element.getAttributeV...
System.out.println(targetPage.getElementById("body")....
}
}
/**
* 一覧ページのうち、コンテンツのリンクである場合はtrue...
* @param element
* @return
*/
public static boolean isTarget(Element element){
if (element.getParentElement().getName() == "li" &&
element.getParentElement().getParentElement().getNam...
element.getParentElement().getParentElement().getPar...
element.getParentElement().getParentElement().getPar...
){
return true;
}
return false;
}
}
いやー、ほんと簡単ですなw
これは便利。
***外部リンク [#ld83ddcc]
最初にこの記事を読みました。
-http://d.hatena.ne.jp/talisker_ZQN/20100801/1280651267
ページ名: