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

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

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

2019-11-09 21:14:50
字體:
來源:轉載
供稿:網友

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頁面中獲取你想要的內容,可以多一點查看各種的節點過濾器,它可以幫助我們選出我們想要的內容,每次在爬取網頁之前我們都要花大量時間去分析一個網頁,找到我們想要的內容,不能多也不能少,這我覺得才是爬蟲的使用的重點


上一篇:4 Values whose Sum is 0

下一篇:SSDTHook的原理

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋城| 沁水县| 三门峡市| 澜沧| 南昌县| 沭阳县| 调兵山市| 张北县| 剑河县| 漳平市| 宝鸡市| 平度市| 龙里县| 三亚市| 宜兰县| 阿城市| 闽侯县| 凤阳县| 淳化县| 余干县| 象山县| 鄂托克旗| 凉城县| 吴旗县| 鹰潭市| 万年县| 津市市| 扎赉特旗| 咸阳市| 台东市| 交口县| 塔河县| 繁昌县| 汽车| 化德县| 葫芦岛市| 罗平县| 靖江市| 岚皋县| 淮南市| 东乌|