用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("下载完毕喽,祝您开心")