[Android]tagSoup で Webスクレイピング
tagSoup はHTMLパーサー。
AndroidのWebViewでも使われているらしい。
ただ、APIは公開されていないので、外部jarとして登録して使いました。
jar は公式サイトから Download できます。
http://ccil.org/~cowan/XML/tagsoup/
サイズも100kb未満で経済的。
使い方が、ちんぷんかんぷん。
一度、挫折しかけました。
こちらのサイトを参照しながら何とか実装。
http://d.hatena.ne.jp/Retrorocket/20110905/1315214059
http://www.beach5.net/2011/11/androidhtml-2.html
http://nullmo.blog89.fc2.com/blog-entry-492.html
調べた限りだと方法は2つあります。
1.Transformして、タグネームでノードを取得する方法。
Transformer transformer = TransformerFactory.newInstance()
.newTransformer();
DOMResult result = new DOMResult();
transformer.transform(new SAXSource(reader, source), result);
Document doc = (Document) result.getNode();
NodeList childs = doc.getElementsByTagName(“td”);
2.Paerser にHandlerをセットして、パースしていく方法。
InputSource source = new InputSource(new InputStreamReader(in, “UTF-8”));
parser.setContentHandler(new TestHandler());
parser.parse(source);
private class TestHandler implements org.xml.sax.ContentHandler
{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException
{
}
@Override
public void endDocument() throws SAXException
{
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException
{
}
@Override
public void startDocument() throws SAXException
{
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException
{
}
Comments are currently closed.