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

首頁 > 學院 > 開發設計 > 正文

htmlparse的簡單使用--------爬取電影網頁的全部下載鏈接

2019-11-10 16:49:58
字體:
來源:轉載
供稿:網友

1前期準備,下載htmlparse壓縮包并配置到eclipse上,到下面網址可以下載

http://htmlparser.sourceforge.net/ 1 7 2 3 4 現在我們就可以導入和使用htmlparser了 2.網頁的分析與根據網頁源碼使用htmlparse

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

5 現在我們來查看網頁源代碼 6

好、我們現在先來獲取一個頁面的下載鏈接

/** * 獲取一個頁面的下載鏈接 */ public static String getMoiveDownloadUrl(String moiveIntroUrl) { //頁面下載連接保存在這里 String moiveDownLoadUrl = ""; try { //首先根據頁面URL建立一個Parser. Parser parser = new Parser(moiveIntroUrl);//使用parser中extractAllNodesThatMatch方法,這個有許多的過濾器,可以幫助我們過濾出我們想要的內容,具體可以看api的介紹//這里我們使用鏈接文本過濾器,可以過濾出鏈接里面含ftp的內容,這樣就可以取出我們想要的鏈接 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);//這里我們使用屬性過濾器,可以幫助我們過濾一些屬性特殊或者屬性里面值唯一的標簽 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、獲取電影網里面的所有分頁 10 11/** * 獲取電影網里面的所有的分頁 */ 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; }

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

/** * 功能:保存數據到文件中 * * @param content * 要保存的內容 * @param fileName * 目標文件名(路徑) */ 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.分析與總結

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华安县| 湖北省| 浪卡子县| 郓城县| 昭觉县| 定安县| 台山市| 乌审旗| 同江市| 商南县| 萨嘎县| 诸暨市| 济源市| 桂林市| 平顺县| 武夷山市| 涞水县| 伊吾县| 塔河县| 邯郸县| 基隆市| 柳河县| 临海市| 怀安县| 竹北市| 长顺县| 连平县| 满洲里市| 蛟河市| 苏州市| 老河口市| 宣武区| 武川县| 沅江市| 张掖市| 通化市| 玛曲县| 廊坊市| 定安县| 仁寿县| 佛山市|