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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

python

用Python下载文件

發(fā)布時(shí)間:2023/12/13 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python下载文件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前提條件

需要事先安裝requests模塊:

  • pip install requests

放碼過(guò)來(lái)

import requestsurl = 'XXX' #文件下載來(lái)源URL filename = '' #下載到本地后新文件名 r = requests.get(url) with open(filename, "wb") as code:code.write(r.content)

實(shí)戰(zhàn)演習(xí)

從目標(biāo)URL大電影雙語(yǔ)閱讀.星際穿越 Interstellar (贈(zèng)英文音頻與單詞隨身查APP)下載音頻文件。


通過(guò)瀏覽器后臺(tái)分析,可找到音頻的URL。


其實(shí)通過(guò)瀏覽器自帶下載功能,應(yīng)該很容易下載到本地。


但是,屢試不行。


于是,尋思著,同一瀏覽器,同樣請(qǐng)求URL,為何卻得不到想要的結(jié)果?

嘗試在地址欄輸入音頻的URL。

Access Denied, You are denied by bucket referer policy.

看到被拒的信息后,聯(lián)想到會(huì)不會(huì)是請(qǐng)求頭的緣故呢?


于是,瀏覽器后臺(tái)查找音頻URL的請(qǐng)求頭。

有可能是下載器發(fā)出請(qǐng)求時(shí)沒(méi)要帶上Referer等參數(shù)而被拒絕連接。


是時(shí)候發(fā)揮Python的強(qiáng)大功力了,在請(qǐng)求下載時(shí)請(qǐng)求頭帶上Referer等參數(shù)。

headers={"Referer": "http://www.ecustpress.cn/erweima/player.html?blid=11089","Accept-Encoding":"identity;q=1, *;q=0","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","Range":"bytes=0-" }res = requests.get(url % (i + 1), headers=headers)

另外還發(fā)現(xiàn),目標(biāo)URL中的所有音頻URL尾有很明顯的規(guī)律:1.mp3、2.mp3、3.mp3…、37.mp3。

于是,一鼓作氣將它們下載到本地。

綜上所述,最終代碼:

import requests import os import time import randomurl = "http://hldqrcode1.oss-cn-shanghai.aliyuncs.com/wapaudio/56474/%d.mp3"headers={ "Referer": "http://www.ecustpress.cn/erweima/player.html?blid=11089", "Accept-Encoding":"identity;q=1, *;q=0", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "Range":"bytes=0-" }for i in range(37):fileName = ("0" if i + 1 < 10 else "") + ("%d.mp3" % (i + 1))if os.path.exists(fileName):continueprint "Download %s" % fileNametry:res = requests.get(url % (i + 1), headers=headers)with open(fileName, "wb") as code:code.write(res.content)time.sleep(10 * random.random())except Exception as err:print "Something wrong happens when downloading %s" % fileNameprint err

碼到功成!

參考資料

  • python下載文件的三種方法

  • Python——爬蟲【Requests設(shè)置請(qǐng)求頭Headers】

  • 總結(jié)

    以上是生活随笔為你收集整理的用Python下载文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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