日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地

發(fā)布時(shí)間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一講我們說了如何把網(wǎng)頁的數(shù)據(jù)通過分析后存儲到數(shù)據(jù)庫,我們這次講如何將網(wǎng)頁上的圖片提取并下載到本地。

思路如下:

我們本次要爬取的是昵圖網(wǎng)首頁的圖片。

1、首先分析我們要爬取的網(wǎng)頁的代碼結(jié)構(gòu),每個網(wǎng)頁的代碼結(jié)構(gòu)都不大一樣,所以要做好分析。

我們進(jìn)入昵圖網(wǎng)的首頁,http://www.nipic.com/index.html

按F12開啟瀏覽器的調(diào)試模式,可以通過鼠標(biāo)看到圖片的后臺代碼:點(diǎn)擊調(diào)試的小箭頭,然后點(diǎn)擊對應(yīng)的圖片,既可以看到圖片在頁面上對應(yīng)的編碼。

或者,直接“查看源代碼”就可以看到整個網(wǎng)頁的源碼

我們可以在源代碼界面看到很多.jpg結(jié)尾的圖片

我們可以直接通過查找來查看到底有多少張圖片在頁面上,我本次用的是360瀏覽器,每個瀏覽器的使用方法大同小異。

查找的快捷方式是Ctrl+F ?同時(shí)按住兩個按鍵就可以在提示框中輸入查找的信息。

或者右擊菜單“查找”

在關(guān)鍵詞框中輸入".jpg"

我們可以看到,系統(tǒng)提示是14張圖片的鏈接。

2、編寫代碼,獲取網(wǎng)頁的圖片,首先我們要這個頁面的圖片的大體格式是怎樣的。

我們看下幾個圖片鏈接的代碼格式:

上面三張圖片的格式都是常見的:http://.......jpg,則我們可以把這個做成正則表達(dá)式的形式如:http:\S{1,}.jpg

則,我們利用前面兩講的代碼,編寫如下:

3、效果如下:

點(diǎn)擊運(yùn)行后,系統(tǒng)自動在D盤的image文件夾下載對應(yīng)的圖片

最終下載完后:

最后,其實(shí)你網(wǎng)速快的話,程序不設(shè)置休眠也可以。

最后,總結(jié)下我們本次用到的新知識:

1、函數(shù):urllib.urlretrieve(url[, filename[, reporthook[, data]]])

函數(shù)說明

將URL表示的網(wǎng)絡(luò)對象復(fù)制到本地文件。如果URL指向本地文件,則對象將不會被復(fù)制,除非提供文件名。返回一個元組()(filename,header),其中filename是可以找到對象的本地文件名,header是urlopen()返回的對象的info()方法(用于遠(yuǎn)程對象)。

第二個參數(shù)(如果存在)指定要復(fù)制到的文件位置(如果沒有,該位置將是一個生成名稱的tempfile)。第三個參數(shù),如果存在,則是一個回調(diào)函數(shù),它將在建立網(wǎng)絡(luò)連接時(shí)調(diào)用一次,并且在此后每個塊讀取后調(diào)用一次。這個回調(diào)函數(shù)將傳遞三個參數(shù);到目前為止傳輸?shù)膲K計(jì)數(shù),以字節(jié)為單位的塊大小,以及文件的總大小。第三個參數(shù)可能是-1,在舊的FTP服務(wù)器上,它不返回文件大小以響應(yīng)檢索請求。

參數(shù)說明:

url:外部或者本地url

filename:指定了保存到本地的路徑(如果未指定該參數(shù),urllib會生成一個臨時(shí)文件來保存數(shù)據(jù));

reporthook:是一個回調(diào)函數(shù),當(dāng)連接上服務(wù)器、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢的時(shí)候會觸發(fā)該回調(diào)。我們可以利用這個回調(diào)函數(shù)來顯示當(dāng)前的下載進(jìn)度。

data:指post到服務(wù)器的數(shù)據(jù)。該方法返回一個包含兩個元素的元組(filename, headers),filename表示保存到本地的路徑,header表示服務(wù)器的響應(yīng)頭。

2、time.sleep(secs)

Python time sleep() 函數(shù)推遲調(diào)用線程的運(yùn)行,可通過參數(shù)secs指秒數(shù),表示進(jìn)程掛起的時(shí)間。

3、os.makedirs()函數(shù)

語法格式:

os.makedirs(name[, mode=0o777][, exist_ok=False])

遞歸目錄創(chuàng)建函數(shù),和mkdir()很像,但是所有中間級目錄都要包含葉目錄。

遞歸創(chuàng)建目錄,題中應(yīng)有之意即路徑中哪一層不存在,則自動創(chuàng)建。

區(qū)別于os.mkdir(path, mode=0o777, *, dir_fd=None),只創(chuàng)建最后一層的目錄。

name:所要創(chuàng)建的目錄

參數(shù)mode表示權(quán)限;

如果exist_ok是False(默認(rèn)),當(dāng)目標(biāo)目錄(即要創(chuàng)建的目錄)已經(jīng)存在,會拋出一個OSError。

4、b=a.split('/')[-1]

我們不確定圖片鏈接的長度,所以如果從左邊開始取下標(biāo),則最后一個文件名的下標(biāo)值是不一樣的,不好操作,但是如果寫的是-1,則說明要取得是右邊第一個。

本節(jié)課沒有課堂視頻,因?yàn)樾碌慕淌覜]有帶多余的麥克風(fēng)。

總結(jié)

以上是生活随笔為你收集整理的java爬取网页并保存_第九讲:Python爬取网页图片并保存到本地的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。