python爬蟲之下載文件的方式總結以及程序實例


 

python爬蟲之下載文件的方式以及下載實例

 

 

目錄

第一種方法:urlretrieve方法下載

第二種方法:request download

第三種方法:視頻文件、大型文件下載

實戰演示

 


第一種方法:urlretrieve方法下載

 

程序示例

import os
from urllib.request import urlretrieve
os.makedirs('./img/',exist_ok=True) #創建目錄存放文件
image_url = "https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg"
urlretrieve(image_url,'./img1/image1.png') #將什么文件存放到什么位置

  

 

補充知識

os.makedirs() 方法用於遞歸創建目錄。像 mkdir(), 但創建的所有intermediate-level文件夾需要包含子目錄。
語法
makedirs()方法語法格式如下:
os.makedirs(path, mode=0o777)
參數
path -- 需要遞歸創建的目錄。
mode -- 權限模式。
返回值
該方法沒有返回值。

  

 

 

 

第二種方法:request download

 

程序示例

import requests
image_url='https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'
r = requests.get(image_url)
with open('./img1/image1.png','wb') as f:
f.write(r.content)

 

 

補充知識

with open的使用格式

with open(’文件名‘,‘讀寫方式’)as f:
    f.read()  #讀取是整個文件
    f.readline()  #讀取第一行
    f.readlines()    #讀取每一行,可以結合for使用(參考我上述完整代碼),記得都要帶方法都要帶括號,不然返回的是內存地址  
f.close() #關閉文件 文件使用完畢后必須關閉,因為文件對象會占用操作系統的資源,並且操作系統同一時間能打開的文件數量也是有限的
f.write() #寫入文件

  

 

 

第三種方法:視頻文件、大型文件下載

可以設置每次存儲文件的大小,所以可以下載大型文件,當然也可以下載小文件。

 

程序示例

import requests
image_url = 'https://p0.ssl.qhimg.com/t01e890e06c93018fa8.jpg'
r = requests.get(image_url,stream=True) #stream=True #開啟時時續續的下載的方式
with open(filename, 'wb') as f: for chunk in r,iter_content(chunk_size=32): #chunk_size #設置每次下載文件的大小
f.write(chunk) #每一次循環存儲一次下載下來的內容

  

 

 實戰演示

 

下面一個簡單的使用爬蟲下載圖片的程序

 爬取的是一個旅游網站的地圖

 

程序示例

import requests
import os
from bs4 import BeautifulSoup
from urllib.request import urlretrieve

def main():
    url = 'http://www.onegreen.net/maps/List/List_933.html'
    os.makedirs('./img/',exist_ok=True) #創建目錄存放文件
    html = requests.get(url).text #獲取網頁html

    soup = BeautifulSoup(html,'lxml') 
    img_url = soup.find_all('img') #獲取所有的img標簽,我在這里只是演示下載,所有不做進一步的篩選
    print(len(img_url)) 
    for url in img_url:
        ul = url['src'] #獲取src屬性
        img = 'http://www.onegreen.net/' + ul #補全圖片url
        print(img)
        urlretrieve(img , './img/%s' % ul.split('/')[-1]) #存儲圖片
if __name__ =='__main__':
main()

 

 

程序運行結果

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM