喵喵程式-批次下載檔案
最近因為有大量下載的需求,比較久以前是用flashget這種下載器裡面有批次下載的功能,再去做,不過基本上這類下載器通常都是用數字去做批次,如果檔案的來源不是數字規則就會有問題,而且flashget也都不知道多久以前了,也不想為了這個再去找別的程式,就嘗試用python自己做。
基本的流程還是要先去網頁原始碼裡面查看有沒有下載的連結,通常可以用副檔名去查詢,例如.pdf、.jpg這類的,這樣可以找到原始來源的網址。再來就是觀察有沒有規則,有了規則之後就可以用迴圈去寫,在做批次下載。
我的批次規則來自一個excel檔,裡面會有連結的檔名還有我希望存檔的檔名。這邊就用pandas去讀取資料,當然如果是數字規則,直接用迴圈寫就可以了。再把網址拼出來用requests發出要求,最後把檔案存下來。
#需要安裝的套件放最前面
#pip install pandas requests
import pandas as pd
import requests
def download_url():
df=pd.read_excel(r'files/pdf_detail.xlsx',converters={'連結名稱':str,'檔名':str}) #這邊讓資料近來都是str避免python判斷是數字的時候可能會把0123變成123
print('Start')
i=0
j=10
while i<len(df):
url='https://download.url/'+df.iloc[i,0]+'.pdf' #拼出網址
response = requests.get(url)
open('download/'+df.iloc[i,1]+'.pdf', "wb").write(response.content)
if i/len(df)*100>j: #做一個下載百分比,不然會有點懷疑到底抓到哪裡了,或是陷入無限迴圈
print(str(int(i/len(df)*100))+'%')
j+=10
i+=1
print('Done')
留言
張貼留言