HTMLPaser浅析

来源:互联网 发布:数据库系统的核心是 编辑:程序博客网 时间:2024/06/12 01:17

比来快递收多了,发觉没个主动跟踪的app还真是累,虽说国内快递的跟踪信息更新比力慢,可是有得看总比没有好。海内的公司貌似不会供给api的,以是只能本身抓取内容。抓取内容就触及到对HTML代码的剖析题目,Google了一下,发明这类包仍是良多的。我挑选了HTMLParser(http://htmlparser.sourceforge.net/),上面简略引见下用HTMLParser抓取table标签内容的方式:

12345678910111213141516171819202122232425262728293031323334353637383940414243
package org.odichy.parsertest;?import java.net.URL;?import org.htmlparser.NodeFilter;import org.htmlparser.Parser;import org.htmlparser.filters.NodeClassFilter;import org.htmlparser.tags.TableColumn;import org.htmlparser.tags.TableRow;import org.htmlparser.tags.TableTag;import org.htmlparser.util.NodeList;?public class Main {public static void main(String[] args) throws Exception {//组织最根基的Parser工具,用的是URLConnection为参数的机关函数Parser parser = new Parser((new URL("http://www.谷歌.com/prc/report.html")).openConnection());//NodeFilter便是过滤器,默示你想要甚么标签,若是想要多个标签的话还可以用OrFilter来整合//TableTag.class暗示过滤table标签NodeFilter tableFilter = new NodeClassFilter(TableTag.class);//标签成果列表,用法和ArrayList差未几NodeList list = parser.parse(tableFilter);for(int i=0;i<list.size();i++) {//实际上这个判定能够不停止if(list.elementAt(i) instanceof TableTag) {TableTag tag = (TableTag)list.elementAt(i);//得到<table />里面的<tr />标签TableRow[] rows = tag.getRows();for(TableRow row: rows) {//取得<tr />内里的<td />标签TableColumn[] tds = row.getColumns();for(TableColumn td: tds) {//这里假如<td />内里不咱们想要的内容,就疏忽了//toPlainTextString()输出的字符串主动过滤了其余标签if("".equals(td.toPlainTextString().trim())) {continue;}System.out.println(td.toPlainTextString().trim());}}}}}}

博文推荐:
  • 抽风是一种糊口立场。_225
原创粉丝点击