日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python使用urllib庫、requests庫下載圖片的方法比較

 flyk0tcfb46p9f 2019-04-14

我們知道,使用Python制作一個爬蟲程序,requests庫是一個不錯的選擇,requests發(fā)送網(wǎng)絡(luò)請求非常簡單,比較使用urllib庫,使用requests庫可以大大減少代碼量,它還可以定制請求頭,這對于爬蟲程序來說是個非常好的功能。再者,使用requests庫時,requests庫會自動解碼來自服務(wù)器的內(nèi)容,而且,大多數(shù)的 unicode 字符都能被無縫地解碼,因此,可以避免大多數(shù)因為編碼造成的問題。今天,我們來看看使用requests如何下載網(wǎng)絡(luò)圖片到本地。

使用urllib庫下載圖片方法探討

我們知道,使用urllib庫可以下載圖片,我們對urllib庫下載圖片進行梳理。具體方法如下。

# jpg_url: 下載圖片網(wǎng)址

# file_path: 文件路徑及名稱

from urllib import request

request.urlretrieve(jpg_link, file_path)

這樣指定圖片就下載到本地目錄。對于一般服務(wù)器沒有反爬措施的可以使用這種方法下載。但是,沒有這么簡單,今天,我們下載一張妹子圖里面的照片。具體美女的圖片我就不貼出來了,網(wǎng)頁源代碼如下。

圖片地址

想這種圖片一般是不好獲取真實圖片地址的,我們試試使用urllib庫不加頭文件直接下載看看。

出錯了!

哦哦,文件下載出錯了,服務(wù)器拒絕了我們。下面,我們加入請求頭看一下結(jié)果。

# coding:utf-8

import urllib

from urllib import request

header = {

'Referer':'妹子圖主頁地址(自己修改)', 'User-Agent':'根據(jù)需要自己瀏覽器添加(機器人以為這個是電話號碼,真讓人欲哭無淚)' }req = urllib.request.Request('此處圖片地址略去', headers = header)req = urllib.request.urlopen(req)with open('meizi.jpg', 'wb') as f: f.write(req.read())

加上請求頭之后文件下載成功。但是請注意,這種方法是使用urlopen()打開Request對象,之后,將對象流保存在本地。

使用requests庫下載圖片的方法探討

同一張圖片,我們使用requests庫再下載一次。毋庸置疑,使用requests庫下載也是要加入headers的,不然,肯定也是被拒絕咯。我們加入header看一下。

個人覺得使用requests比使用urllib方便一點,首先從代碼量上面就有優(yōu)勢;其次,在處理unicode字符時requests也比較占優(yōu)勢,在多數(shù)案例中,urllib里面報錯的放到requests中可能就很好的解決了,建議大家多實驗,從而總結(jié)一個個人常用的庫的使用方法,這樣對以后編寫爬蟲程序是大有裨益的……

好了今天就到這里了!最后,送一張福利給各位……

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多