url請求下載文件的幾種方法

1. 一般頁面

比如 url = 'http://www.baidu.com/'

下載頁面

import urllib.request
url = 'http://www.baidu.com/'
response = urllib.request.urlopen(url=url)

print(response)  # <http.client.HTTPResponse object at 0x0000021C8D0A89E8>
print(type(response))  # <class 'http.client.HTTPResponse'>

# 將響應的頁面下載到文件中
# 第二個參數(shù) 'w' 表示寫入文件中的內(nèi)容是字符串格式腥椒,所以要有第3個參數(shù),指定寫入字符串的編碼。默認值是'gbk'环础,網(wǎng)頁編碼在<meta>標簽中查看
with open('baidu_index.html', 'w', encoding='utf8') as fp:
    # 寫入文件的要對response對象進行二進制讀取宾巍,之后再以對應編碼進行解碼
    fp.write(response.read().decode('utf8'))

如果是要下載圖片這樣的二進制,不能utf8編碼丈甸,直接以二進制寫入文件
比如 url = 'https://wt4u.top/Upload/img/7.jpg'

import urllib.request
url = 'https://wt4u.top/Upload/img/7.jpg'
response = urllib.request.urlopen(url=url)

# 將響應的頁面下載到文件中
# 第二個參數(shù) 'wb' 不需要第3個參數(shù)
with open('mz7.jpg', 'wb') as fp:
    # 寫入的文件是響應的二進制讀取內(nèi)容
    fp.write(response.read())

# 這樣就在當前目錄下生成一個mz7.jpg的文件了

2. 有防盜鏈的圖片

有一些網(wǎng)站的圖片有防盜鏈的機制糯俗,比如妹子圖
這樣下載會報 403 Forbidden 的錯誤
防盜鏈是網(wǎng)站檢測請求是否來自于我自己的網(wǎng)站,請求頭中有一個 Referer 參數(shù)
如果要下載睦擂,需要在發(fā)起請求的時候得湘,帶上有 Referer 的請求頭,而 urllib.request.urlopen(url=url) 沒有 headers 參數(shù)
要換成 response = urllib.request.Request(url=url, headers=headers) 創(chuàng)建請求,再 urllib.request.urlopen(response) 發(fā)起請求顿仇,最后 fp.write(content.read()) 寫入二進制文件

import urllib.request

url = 'https://wt4u.top/Upload/img/7.jpg'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
    'Referer': 'http://www.meizitu.com'
}

# 創(chuàng)建請求
response = urllib.request.Request(url=url, headers=headers)
# 發(fā)起請求
content = urllib.request.urlopen(response)
# 下載圖片
with open('01mz71.jpg', 'wb') as fp:
    # 寫入的文件是響應的二進制讀取內(nèi)容
    fp.write(content.read())

或者換成 requests 模塊的 requests.get(url=url, headers=headers) 方法發(fā)起請求淘正,獲取響應

import requests
url = 'http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/01.jpg'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
    'Referer': 'http://www.meizitu.com'
}
response = requests.get(url=url, headers=headers)
with open('mzt.jpg', 'wb') as fp:
    fp.write(response.content)

# 這樣就會在當前目錄下生成一個mzt.jpg,即為要下載的圖片

3. urllib.request.urlretrieve

此外摆马,urllib.request 有一個更加簡單的下載文件的方法叫
urllib.request.urlretrieve(url,filepath)

import urllib.request
# 下載圖片
url = 'https://wt4u.top/Upload/img/7.jpg'
filepath = './mz70.jpg'
urllib.request.urlretrieve(url,filepath)

# 下載網(wǎng)頁
baidu_url = 'http://www.baidu.com/'
filepath_baidu = './baidu.html'
urllib.request.urlretrieve(baidu_url, filepath_baidu)

4. 【注意】

urlretrieve 方法,因為沒有 headers 參數(shù)鸿吆,無法攜帶Referer囤采,所以同樣不能用于下載有防盜鏈的圖片。
下載防盜鏈的圖片伞剑,只能用 requests.get(url=url, headers=headers),或者

response = urllib.request.Request(url=url, headers=headers) 
content = urllib.request.urlopen(response)

如果這篇文章對你有幫助斑唬,不妨點個贊哦 (˙?˙)?--?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市黎泣,隨后出現(xiàn)的幾起案子恕刘,更是在濱河造成了極大的恐慌,老刑警劉巖抒倚,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褐着,死亡現(xiàn)場離奇詭異,居然都是意外死亡托呕,警方通過查閱死者的電腦和手機含蓉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來项郊,“玉大人馅扣,你說我怎么就攤上這事∽沤担” “怎么了差油?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長任洞。 經(jīng)常有香客問我蓄喇,道長,這世上最難降的妖魔是什么交掏? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任妆偏,我火速辦了婚禮,結果婚禮上盅弛,老公的妹妹穿的比我還像新娘钱骂。我一直安慰自己,他們只是感情好熊尉,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布罐柳。 她就那樣靜靜地躺著,像睡著了一般狰住。 火紅的嫁衣襯著肌膚如雪张吉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天催植,我揣著相機與錄音肮蛹,去河邊找鬼勺择。 笑死,一個胖子當著我的面吹牛伦忠,可吹牛的內(nèi)容都是我干的省核。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昆码,長吁一口氣:“原來是場噩夢啊……” “哼气忠!你這毒婦竟也來了?” 一聲冷哼從身側響起赋咽,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旧噪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脓匿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淘钟,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年陪毡,在試婚紗的時候發(fā)現(xiàn)自己被綠了米母。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡毡琉,死狀恐怖铁瞒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桅滋,我是刑警寧澤精拟,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站虱歪,受9級特大地震影響,放射性物質發(fā)生泄漏栅表。R本人自食惡果不足惜笋鄙,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怪瓶。 院中可真熱鬧萧落,春花似錦、人聲如沸洗贰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敛滋。三九已至许布,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绎晃,已是汗流浹背蜜唾。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工杂曲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袁余。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓擎勘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颖榜。 傳聞我的和親對象是個殘疾皇子棚饵,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • urllib and urllib2 區(qū)別 –博主提示:下面的是python2中的用法,python3需要做出相應...
    sunnyRube閱讀 1,403評論 0 1
  • 聲明:本文講解的實戰(zhàn)內(nèi)容掩完,均僅用于學習交流噪漾,請勿用于任何商業(yè)用途! 一藤为、前言 強烈建議:請在電腦的陪同下怪与,閱讀本文...
    Bruce_Szh閱讀 12,704評論 6 28
  • Python學習網(wǎng)絡爬蟲主要分3個大的版塊:抓取,分析缅疟,存儲 另外分别,比較常用的爬蟲框架Scrapy,這里最后也詳細...
    楚江數(shù)據(jù)閱讀 1,469評論 0 6
  • 1, 你用過的爬蟲框架或者模塊有哪些存淫?談談他們的區(qū)別或者優(yōu)缺點耘斩? Python自帶:urllib,urllib2 ...
    城北有夢閱讀 6,013評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理桅咆,服務發(fā)現(xiàn)括授,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139