摘要:介紹在博客爬蟲爬取豆瓣電影圖片中我們利用的爬蟲框架,將豆瓣電影圖片下載到自己電腦上。那么,在的爬蟲的也可以下載圖片嗎答案當然是肯定的在本次分享中,我們將利用的包和函數(shù)來實現(xiàn)圖片的下載。
介紹
??在博客:Scrapy爬蟲(4)爬取豆瓣電影Top250圖片中我們利用Python的爬蟲框架Scrapy,將豆瓣電影Top250圖片下載到自己電腦上。那么,在Java的爬蟲的也可以下載圖片嗎?答案當然是肯定的!
??在本次分享中,我們將利用Java的Jsoup包和FileUtils.copyURLToFile()函數(shù)來實現(xiàn)圖片的下載。我們將會爬取IMDB中Top250電影的圖片到自己電腦上,其網(wǎng)頁截圖如下:
??我們實現(xiàn)圖片下載的爬蟲思路如下:
利用Jsoup解析網(wǎng)頁,得到電影圖片的url和name
利用FileUtils.copyURLToFile()函數(shù)將圖片下載到本地
準備??在本文程序中,除了Jsoup包外,還用到了commons-io包,其下載地址為:https://mvnrepository.com/art... ,我們主要利用該package中的FileUtils.copyURLToFile(). 讀者需要下載這兩個包,并將它們在Eclipse中加入到項目的路徑中。
程序??本次分享的主要程序為ImageScraper.java,其完整代碼如下:
package wikiScrape; /* 本爬蟲爬取http://www.imdb.cn/IMDB250/中Top250的圖片 * 先利用Jsoup解析得到該網(wǎng)頁中的圖片的url * 然后利用FileUtils.copyURLToFile()函數(shù)將圖片下載到本地 */ import java.io.*; import java.net.*; import java.util.Date; import java.util.ArrayList; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.apache.commons.io.FileUtils; public class ImageScraper { public static void main(String[] args) { Date d1 = new Date(); System.out.println("爬蟲開始......"); // 爬取的網(wǎng)址列表,一共十個網(wǎng)頁 ArrayListurls = new ArrayList (); urls.add("http://www.imdb.cn/IMDB250/"); for(int i=2; i<=10; i++) { urls.add("http://www.imdb.cn/imdb250/"+ Integer.toString(i)); } String dir = "E://log/"; // 圖片儲存目錄 // 利用循環(huán)下載每個頁面中的圖片 for(String url: urls) { int index = urls.indexOf(url)+1; System.out.println("開始下載第"+index+"個網(wǎng)頁中的圖片..."); getPictures(url, dir); System.out.println("第"+index+"個網(wǎng)頁中的圖片下載完畢! "); } System.out.println("程序運行完畢!"); Date d2 = new Date(); // 計算程序的運行時間,并輸出 long seconds = (d2.getTime()-d1.getTime())/1000; System.out.println("一共用時: "+seconds+"秒."); } // getContent()函數(shù): 將網(wǎng)頁中的電影圖片下載到本地 public static void getPictures(String url, String dir){ // 利用URL解析網(wǎng)址 URL urlObj = null; try{ urlObj = new URL(url); } catch(MalformedURLException e){ System.out.println("The url was malformed!"); } // URL連接 URLConnection urlCon = null; try{ // 打開URL連接 urlCon = urlObj.openConnection(); // 將HTML內(nèi)容解析成UTF-8格式 Document doc = Jsoup.parse(urlCon.getInputStream(), "utf-8", url); // 提取電影圖片所在的HTML代碼塊 Elements elems = doc.getElementsByClass("ss-3 clear"); Elements pic_block = elems.first().getElementsByTag("a"); for(int i=0; i 運行 ??運行以上程序,結(jié)果如下:
??查看E盤中的log文件夾,內(nèi)容如下:
??一共下載了244張圖片,用時140秒,有幾張圖片下載失敗,效果還算OK.
??本次分享就到此結(jié)束嘍,歡迎大家交流~~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/68922.html
摘要:本次分享將在此基礎上,利用多線程,提高程序運行的效率。思路本次分享建立在博客爬蟲之下載中電影的圖片上,總體的爬蟲思路沒有變化,只是在此基礎上引入多線程。 介紹 ??在博客:Java爬蟲之下載IMDB中Top250電影的圖片中我們實現(xiàn)了利用Java爬蟲來下載圖片,但是效率不算太高。本次分享將在此基礎上,利用多線程,提高程序運行的效率。 思路 ??本次分享建立在博客Java爬蟲之下載IMD...
摘要:本次爬蟲項目將會用到模塊中的類,多線程豆瓣電影圖片??偨Y(jié)通過上述兩個爬蟲程序的對比,我們不難發(fā)現(xiàn),同樣是下載豆瓣電影,個網(wǎng)頁中的圖片,在沒有使用多線程的情況下,總共耗時約,而在使用多線程個線程的情況下,總共耗時約秒,效率整整提高了約倍。 爬蟲項目介紹 ??本次爬蟲項目將爬取豆瓣Top250電影的圖片,其網(wǎng)址為:https://movie.douban.com/top250, 具體頁面如...
摘要:前篇全片都是生硬的理論使用,今天就放個靜態(tài)爬取的實例讓大家體驗一下的使用,了解一些背后的原理。給出網(wǎng)站打開右鍵檢查第一個電影,分析源碼先,發(fā)現(xiàn)每個標簽就對應著一個電影的信息。 前篇全片都是生硬的理論使用,今天就放個靜態(tài)爬取的實例讓大家體驗一下BeautifulSoup的使用,了解一些背后的原理。 順便在這引入靜態(tài)網(wǎng)頁的概念——靜態(tài)網(wǎng)頁是指一次性加載所有內(nèi)容的網(wǎng)頁,爬蟲一次請求便能得到所...
摘要:另外由于豆瓣上一些電影評分數(shù)量太少而不顯示,所以這里的電影數(shù)量會和票房數(shù)量有所差異。月度票房將類型片的票房按月劃分,得到了這張圖。 去年末的時候,我招收了新的 實訓生 。本文是其中一位 @齊大圣 同學在實訓兩個月時完成的項目案例。(碼上行動群里同學應該都看過這個名字,現(xiàn)在也是助教之一。)項目最初的想法是, 從互聯(lián)網(wǎng)上的公開信息中采集2018年在國內(nèi)上映電影的票房、評分、類型、演員等信息...
摘要:這次我們爬取的內(nèi)容準備步驟找到格式網(wǎng)頁中需要爬取的數(shù)據(jù)的例如我們需要爬取圖片的這里用的是不會用的同學請百度然后我們開始建立工程打開然后在你想要建立工程的目錄下面輸入就會自動建立一個工程然后去根目錄建立一個去這個目錄里建立一個注意這里的主爬蟲 這次我們爬取的內(nèi)容 showImg(https://segmentfault.com/img/bVSirX?w=1021&h=521); 準備步驟...
閱讀 2033·2023-04-25 23:30
閱讀 1455·2021-11-24 10:18
閱讀 3079·2021-10-09 09:54
閱讀 2021·2021-10-08 10:05
閱讀 3436·2021-09-23 11:21
閱讀 3165·2019-08-30 15:52
閱讀 1563·2019-08-30 13:05
閱讀 1061·2019-08-30 13:02