1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#coding=utf-8

#下载完之后还需要删除不需要的图片,再用bat脚本(在最下方)批量重命名(按文件修改时间排序),再TinyPNG无损压缩
prefix='2019-' #请设置一个前缀 #prefix(前缀)
rootPicPath="D:\\DDDDDDDDDDDownload" #请设置图片保存的文件夹

#这个需要安装 requests ,bs4
#在cmd中输入
#python -m pip install requests
#python -m pip install bs4
#requests 可以改header,避免被识别为爬虫
import requests
#同上
from bs4 import BeautifulSoup
#python自带
import urllib.request
#为了使用time.sleep()
import time
#禁用cookie防止被ban
COOKIES_ENABLED=False



def download(page_url,rootPicPath): #prefix 前缀
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36'}
html = requests.get(page_url,headers = header)
soup = BeautifulSoup(html.text,'html.parser')
#find_all 按 img标签 寻找
all_img = soup.find_all('img')

#防止过快爬虫,导致被ban
time.sleep(1)

n=1 #图片起始序号
for img in all_img:
#获取网络图片链接,设置图片名
picUrl = img.get('src')
picName= str(prefix) + "-" + str(n) + ".jpg"
n+=1
#生成本地图片名
picPath = rootPicPath + "\\" + picName

try:
urllib.request.urlretrieve(picUrl,picPath)
print(picName+"————下载完成")
except Exception as err:
print(picName+"————————下载失败")
print()
print('error: ',err)
print()

#防止过快爬虫,导致被ban
time.sleep(1)

def mkdir(path):
# 引入模块
#os用于创建文件夹
import os
# 去除首位空格
path = path.strip()
# 去除尾部 \ 符号
path = path.rstrip("\\")
isExists = os.path.exists(path)

# 判断结果
if not isExists:
os.makedirs(path)
return True
else:
return False



#主函数
if __name__=='__main__':
url_list = [
"https://blog.csdn.net/qq_35208390/article/details/86496498",
]
#创建文件夹
mkdir(rootPicPath)

for link in url_list:
download(link,rootPicPath)


# @echo off
# set a=000
# setlocal EnableDelayedExpansion
# #(2016*.*) 用前缀匹配
# #(*.jpg) 用后缀匹配 win不区分大小写
# #这个bat按【文件的修改时间】来【排序】【命名顺序】=。= 也就是对瞬间下载的没有效果
# # %random% 生成 0~65535 的随机数,但是一批修改的文件附加的随机数相同
# for %%n in (2019*.*) do (
# set /A a+=1
# ren "%%n" "2019-03-19-!a!-%random%.png"
# )