SECTION 01 下載安裝
如果老板今天要叫你寫(xiě)一個(gè)小程序, 去抓取某個(gè)網(wǎng)頁(yè)的所有 image, 該怎么做呢, 你必須先把所有的 image url 先 parse 出來(lái), 接著一個(gè)一個(gè)圖片下載下來(lái), 那么 image url 該如何 parse , 這個(gè)就是 htmlparser 的功能了, 當(dāng)然, 應(yīng)用方面非常的廣, 在 xml 成為數(shù)據(jù)交換還沒(méi)有普及化時(shí), 利用其它網(wǎng)站的資料來(lái)加強(qiáng)自己網(wǎng)站的功能, 也是一件很重要的工作, 此外, 請(qǐng)注重知識(shí)產(chǎn)權(quán)
目前 realse 的版本是 1.3 Htmlparser 下載解壓縮后該目錄有 src.zip 是 source code.
SECTION 02 范例
因?yàn)?docs\docs 提供的范例有一點(diǎn)版本上的錯(cuò)誤, method 名稱(chēng)可能不太正確, 不過(guò)觀念是一樣的, 可能要多測(cè)試一下, 最好有 IDE 去設(shè)置 lib (htmlparser.jar) 接著自動(dòng)帶出 Method Name 來(lái)修正這個(gè)錯(cuò)誤
我改了幾個(gè)正確的范例如下
AllNodeImageExtractor.java 下載該 URL 所有的 image 名稱(chēng)
SECTION 03 JavaBeans
執(zhí)行方式
cmd>java -classpath htmlparser.jar org.htmlparser.beans.BeanyBaby
他的 BeanyBaby.class 在 htmlparser.jar 中, 你可以參考 org.htmlparser.beans.* 的所有程序, 如果你要連結(jié)到其它網(wǎng)頁(yè), 你可以修改 bb.setURL("http://whatUwannaGo");
SECTION 03 后記
或許你很幸福完全不會(huì)遇到要轉(zhuǎn) html 的時(shí)候, 只是我以前為了parse html 用 mfc 寫(xiě)了很久, 現(xiàn)在利用 這個(gè) lib 所花的功就只有把這些 documentum 讀一讀, 范例看一看, 參考 api doc 實(shí)現(xiàn)就好了, 真不知道 M$ 是否有這種 opensource support C#, 或許 .NET 和 JAVA 的差異就是在這吧 ~~~~~~~
如果老板今天要叫你寫(xiě)一個(gè)小程序, 去抓取某個(gè)網(wǎng)頁(yè)的所有 image, 該怎么做呢, 你必須先把所有的 image url 先 parse 出來(lái), 接著一個(gè)一個(gè)圖片下載下來(lái), 那么 image url 該如何 parse , 這個(gè)就是 htmlparser 的功能了, 當(dāng)然, 應(yīng)用方面非常的廣, 在 xml 成為數(shù)據(jù)交換還沒(méi)有普及化時(shí), 利用其它網(wǎng)站的資料來(lái)加強(qiáng)自己網(wǎng)站的功能, 也是一件很重要的工作, 此外, 請(qǐng)注重知識(shí)產(chǎn)權(quán)
目前 realse 的版本是 1.3 Htmlparser 下載解壓縮后該目錄有 src.zip 是 source code.
SECTION 02 范例
因?yàn)?docs\docs 提供的范例有一點(diǎn)版本上的錯(cuò)誤, method 名稱(chēng)可能不太正確, 不過(guò)觀念是一樣的, 可能要多測(cè)試一下, 最好有 IDE 去設(shè)置 lib (htmlparser.jar) 接著自動(dòng)帶出 Method Name 來(lái)修正這個(gè)錯(cuò)誤
我改了幾個(gè)正確的范例如下
AllNodeImageExtractor.java 下載該 URL 所有的 image 名稱(chēng)
import org.htmlparser.*;
import org.htmlparser.visitors.*;
import org.htmlparser.util.*;
import org.htmlparser.tags.*;
/**
* LinkExtractor extracts all the links from the given webpage
* and prints them on standard output.
*/
public class AllNodeImageExtractor {
public static void main(String[] args) {
try {
Parser parser = new Parser("http://www.softleader.com.tw/companyIntro.screen");
ObjectFindingVisitor visitor =
new ObjectFindingVisitor(ImageTag.class,true);
parser.registerScanners();
// Instead of registering all scanners,
// you could also do - parser.addScanner(new ImageScanner(""));
Node [] images = parser.extractAllNodesThatAre(ImageTag.class);
System.out.println(images.length);
for (int i=0;i < images.length;i++) {
ImageTag imageTag = (ImageTag)images[i];
System.out.println(imageTag.getImageURL());
}
}
catch (ParserException ex) {
System.out.println(ex);
}
}
}
這程序非常簡(jiǎn)單, javac 編譯完后直接用 java AllNodeImageExtractor 執(zhí)行, 就可以列出所有的 imageName 了, 他的程序步驟就是
- 先產(chǎn)生一個(gè) Parser 連結(jié)到 URL
- 設(shè)定你要下載的模式 vistor ( 可以使用內(nèi)建的或自己開(kāi)發(fā) )
- parser 注冊(cè)一個(gè) scanner
- 真正去 parser 產(chǎn)生數(shù)據(jù)返回 array 給 node
- println 數(shù)據(jù)
SECTION 03 JavaBeans
執(zhí)行方式
cmd>java -classpath htmlparser.jar org.htmlparser.beans.BeanyBaby

他的 BeanyBaby.class 在 htmlparser.jar 中, 你可以參考 org.htmlparser.beans.* 的所有程序, 如果你要連結(jié)到其它網(wǎng)頁(yè), 你可以修改 bb.setURL("http://whatUwannaGo");
public static void main (String[] args)
{
BeanyBaby bb = new BeanyBaby ();
bb.show ();
bb.setURL ("http://www.netbeans.org");
}
SECTION 03 后記
或許你很幸福完全不會(huì)遇到要轉(zhuǎn) html 的時(shí)候, 只是我以前為了parse html 用 mfc 寫(xiě)了很久, 現(xiàn)在利用 這個(gè) lib 所花的功就只有把這些 documentum 讀一讀, 范例看一看, 參考 api doc 實(shí)現(xiàn)就好了, 真不知道 M$ 是否有這種 opensource support C#, 或許 .NET 和 JAVA 的差異就是在這吧 ~~~~~~~