用Python爬取日向、櫻阪成員blog中的JPG檔案的url並將其下載到本地
阿新 • • 發佈:2020-11-23
前言
目前可以使用這段程式碼爬取日向阪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("下載完畢嘍,祝您開心")