Python應用開發——爬取網頁圖片

專注的阿熊發表於2022-09-21

# 第一版

#-*-coding:utf-8-*-

import os

import re

import time

import requests

import bs4

from bs4 import BeautifulSoup

# 手動寫入目標套圖的首頁地址

download_url = "

# 手動寫入目標套圖的頁數

page_num = 25

# 建立一個資料夾用來儲存圖片

file_name = " 測試相簿 "

# 目標圖片下載地址的前半部分 ( 固定不變那部分,後半段是變化的,需要解析網頁得到 )

imgae_down_url_1 = "

# 建立資料夾

def CreateFolder(file):

     """ 建立儲存資料資料夾 """

     flag = 1

     while flag == 1:    # 若檔案已存在,則不繼續往下走以免覆蓋了原檔案

         if not os.path.exists(file):

             os.mkdir(file)

             flag = 0

         else:

             print(' 該檔案已存在,請重新輸入 ')

             flag = 1

             time.sleep(1)

         # 返回資料夾的路徑,這裡直接放這工程的根目錄下

         path = os.path.abspath(file) + "\\"

     return path

# 下載圖片

def DownloadPicture(download_url, list, path):

     # 訪問目標網址

     r = requests.get(url=download_url, timeout=20)

     r.encoding = r.apparent_encoding

     soup = BeautifulSoup(r.text, "html.parser")

     # 解析網址,提取目標圖片相關資訊,注:這裡的解析方法是不固定的,可以根據實際的情況靈活使用

     p = soup.find_all("p")

     tag = p[0].find_all("img")  # 得到該頁面目標圖片的資訊

     # 下載圖片

     j = 0

     for i in range(list, list + 3):

         if(j < len(tag) and tag[j].attrs['src'] != None) :

             img_name = 跟單網gendan5.comstr(i) + ".jpg" # 以數字命名圖片,圖片格式為 jpg

             # 獲取目標圖片下載地址的後半部分

             imgae_down_url_2 = tag[j].attrs['src']

             j = j + 1

             # 把目標圖片地址的前後兩部分拼接起來,得到完整的下載地址

             imgae_down_url = imgae_down_url_1 + imgae_down_url_2

             print("imgae_down_url: ", imgae_down_url)

             # 下載圖片

             try:

                 img_data = requests.get(imgae_down_url)

             except:

                 continue

             # 儲存圖片

             img_path = path + img_name

             with open(img_path,'wb') as fp:

                 fp.write(img_data.content)

             print(img_name, "   ****** 下載完成! ")

# 主函式

if __name__ == "__main__":

     # 建立儲存資料的資料夾

     path = CreateFolder(file_name)

     print(" 建立資料夾成功 : ", path)

     # 按頁下載圖片

     for i in range(0, page_num):

         if i == 0 :

             page_url = download_url # 首頁網址,注:因為這個網站首頁和後面那些頁面網址的規則不一樣,所以這裡要區分開來

         else :

             page_url = download_url[:-5] + "_" + str(i) + ".html"  # 2 頁往後的網址,都是用數字來排布頁面

         # 下載圖片

         # print("page_url: ", page_url)  

         DownloadPicture(page_url, i * 3, path)  # : 這個網站每一頁最多是 3 張圖片,每張圖片我都用數字命名

     print(" 全部下載完成! ", " " + str(len(os.listdir(path))) + " 張圖片 ")

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2915598/,如需轉載,請註明出處,否則將追究法律責任。

相關文章