1. 程式人生 > 實用技巧 >用Python爬取日向、櫻阪成員blog中的JPG檔案的url並將其下載到本地

用Python爬取日向、櫻阪成員blog中的JPG檔案的url並將其下載到本地

前言

目前可以使用這段程式碼爬取日向阪46(hinatazaka46.com)、櫻阪46(keyakizaka46.com)的成員blog圖

目前對爬蟲以及正則表示式還是不是很熟悉,姑且只能做到這個程度,會在接下來的幾天加強自己對這方面的理解,然後會做下載紫團blog的程式碼
注意
程式碼中最開始的“初始設定”部分是需要使用者自定義的,比如:設定爬取的成員的名字(如katoshi、kosaka等等),還需要設定url,這需要使用者進入藍團官網或者白團官網的成員blog介面複製上方的網址並貼在url = 後面,
(PS:由於同一個成員的blog是可以翻頁的,所以需要不同的頁的url來獲取對應頁的圖片,此時注意不僅要改url名還要改name,可以改成如kosaka和kosaka_2_)

效果圖

這是我下載了幾個成員之後的狀態

這就是我上面說的用kosaka_2_命名name的效果

程式碼如下

import os,sys,time,json,time
import socket,random,hashlib
from concurrent.futures.process import ProcessPoolExecutor
import requests,configparser
import json,re

#初始設定
name = "katoshi" #想要將圖片取的名字
os.makedirs('./Picture/'+name, exist_ok=True)
#在目錄下建立一個資料夾用於儲存圖片,這裡以Picture為例子
url = "https://www.hinatazaka46.com/s/official/diary/member/list?ima=0000&ct=5"# 加藤史 #url = "https://www.keyakizaka46.com/s/k46o/diary/member/list?ima=0000&ct=43" #設定想要爬取的網站網址 path=os.getcwd()+'\\Picture\\'+name+"\\" def getpicurl(): jpglist =[] #設定url地址為想要爬取的圖片 html = requests.get(url).text pic_url =
re.findall('img src="(.*?)"', html, re.S) count = 0 print(len(pic_url)) for key in pic_url: if("jpg" in key): jpglist.append(key) count=count+1 print("全部張數為:"+str(count)+"開始下載嘍") return jpglist #清洗只留下jpg檔案url def download(pic_url): num=1 for i in pic_url: print(i) r = requests.request('get', i) # 獲取網頁 with open(path + name + str(num) + '.jpg', 'wb') as f: # 開啟寫入到path路徑裡-二進位制檔案,返回的控制代碼名為f f.write(r.content) # 往f裡寫入r物件的二進位制檔案 f.close() print("下載第"+str(num)+"張圖片成功!當前進度:"+str(num)+"/"+str(len(pic_url))) num = num+1 #main pic_url = getpicurl() download(pic_url) print(type(pic_url)) print("下載完畢嘍,祝您開心")