国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

htmlparse的簡單使用--------爬取電影網(wǎng)頁的全部下載鏈接

2019-11-10 18:42:30
字體:
供稿:網(wǎng)友

1前期準(zhǔn)備,下載htmlparse壓縮包并配置到eclipse上,到下面網(wǎng)址可以下載

http://htmlparser.sourceforge.net/ 1 7 2 3 4 現(xiàn)在我們就可以導(dǎo)入和使用htmlparser了 2.網(wǎng)頁的分析與根據(jù)網(wǎng)頁源碼使用htmlparse

1、這里先分析與獲取一個電影介紹頁面的內(nèi)容

5 現(xiàn)在我們來查看網(wǎng)頁源代碼 6

好、我們現(xiàn)在先來獲取一個頁面的下載鏈接

/** * 獲取一個頁面的下載鏈接 */ public static String getMoiveDownloadUrl(String moiveIntroUrl) { //頁面下載連接保存在這里 String moiveDownLoadUrl = ""; try { //首先根據(jù)頁面URL建立一個Parser. Parser parser = new Parser(moiveIntroUrl);//使用parser中extractAllNodesThatMatch方法,這個有許多的過濾器,可以幫助我們過濾出我們想要的內(nèi)容,具體可以看api的介紹//這里我們使用鏈接文本過濾器,可以過濾出鏈接里面含ftp的內(nèi)容,這樣就可以取出我們想要的鏈接 NodeList nodelist = parser.extractAllNodesThatMatch(new LinkStringFilter("ftp")); for (int i = 0; i < nodelist.size(); i++) { LinkTag tag = (LinkTag) nodelist.elementAt(i); moiveDownLoadUrl = tag.getLink(); } } catch (ParserException e) { e.PRintStackTrace(); } return moiveDownLoadUrl; }2、獲取一個分頁里的所有電影介紹頁面 8 9/** * 獲取一個分頁里的所有電影介紹頁面 */ public static List getAllMoiveUrlFromOneList(String pageListUrl) {//將鏈接地址以集合的形式返回出去 List<String> allMoiveUrl = new ArrayList<String>(); try { Parser parser = new Parser(pageListUrl);//這里我們使用屬性過濾器,可以幫助我們過濾一些屬性特殊或者屬性里面值唯一的標(biāo)簽 NodeList nodelist = parser.extractAllNodesThatMatch(new HasAttributeFilter("class", "ulink")); for (int i = 0; i < nodelist.size(); i++) { LinkTag tag = (LinkTag) nodelist.elementAt(i);//將取出的分頁鏈接拼接一下,放入到集合中來。 allMoiveUrl.add("http://www.ygdy8.net" + tag.getLink()); } } catch (ParserException e) { e.printStackTrace(); } return allMoiveUrl; }3、獲取電影網(wǎng)里面的所有分頁 10 11/** * 獲取電影網(wǎng)里面的所有的分頁 */ public static List getAllPage() {//將鏈接地址以集合的形式返回出去 List<String> allPage = new ArrayList<String>(); try { Parser parser = new Parser("http://www.ygdy8.net/html/gndy/dyzz/index.html"); NodeList nodelist = parser.extractAllNodesThatMatch(new TagNameFilter("option")) .extractAllNodesThatMatch(new HasAttributeFilter("value")); for (int i = 0; i < nodelist.size(); i++) { OptionTag tag = (OptionTag) nodelist.elementAt(i); if(tag.getAttribute("value").contains("list")){ allPage.add("http://www.ygdy8.net/html/gndy/dyzz/" + tag.getAttribute("value")); } } } catch (ParserException e) { e.printStackTrace(); } return allPage; }

我們到現(xiàn)在就可以得到全部分頁的鏈接,各個電影介紹頁面的鏈接,介紹頁面里的下載鏈接。接下來我們要做的就是將這三個方法整合起來,獲得全部電影的下載鏈接

/** * 功能:保存數(shù)據(jù)到文件中 * * @param content * 要保存的內(nèi)容 * @param fileName * 目標(biāo)文件名(路徑) */ public static boolean writeContentToFileTwo(String content, String fileName) { boolean flag = false; try { PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName,true))); pw.println(); pw.print(content); pw.flush(); pw.close(); flag = true; } catch (FileNotFoundException e) { e.printStackTrace(); flag = false; } return flag; }public static List getAllMoive() { List<String> movieList = new ArrayList<String>(); // 得到全部的分頁鏈接 List<String> allPage = getAllPage(); for (Iterator iterator = allPage.iterator(); iterator.hasNext();) { String pageListUrl = (String) iterator.next(); List<String> allMoiveUrl = getAllMoiveUrlFromOneList(pageListUrl); for (Iterator iterator2 = allMoiveUrl.iterator(); iterator2.hasNext();) { String moiveIntroUrl = (String) iterator2.next(); String moiveDownLoadUrl = getMoiveDownloadUrl(moiveIntroUrl); writeContentToFileTwo(moiveDownLoadUrl,"a.txt"); movieList.add(moiveDownLoadUrl); } } return movieList ; } public static void main(String[] args) { getAllMoive(); }

效果截圖 12

3.分析與總結(jié)

其實這個工具的使用是不復(fù)雜的,流程也很清晰,問題的關(guān)鍵在于如何在一個龐大的html頁面中獲取你想要的內(nèi)容,可以多一點查看各種的節(jié)點過濾器,它可以幫助我們選出我們想要的內(nèi)容,每次在爬取網(wǎng)頁之前我們都要花大量時間去分析一個網(wǎng)頁,找到我們想要的內(nèi)容,不能多也不能少,這我覺得才是爬蟲的使用的重點


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 朝阳县| 黑河市| 静海县| 昭苏县| 深圳市| 五莲县| 花垣县| 萨嘎县| 濮阳市| 阿拉尔市| 蓬莱市| 马鞍山市| 黄梅县| 正安县| 贵定县| 龙口市| 磐石市| 容城县| 庆元县| 慈溪市| 太保市| 榆树市| 陇川县| 祁阳县| 肇州县| 嘉禾县| 光泽县| 行唐县| 长泰县| 溧阳市| 星子县| 新邵县| 手游| 清徐县| 克什克腾旗| 长治县| 泰宁县| 汝城县| 礼泉县| 敦煌市| 铁岭市|