我比较菜,这点代码写了一下午,希望对你有帮助。
#python批量下载图片#
from bs4 import BeautifulSoup
import requests
import os
import time
url="https://pic.netbian.com/"
#输入首页,输出首页HTML
def Html(url,beas='utf-8'):
resp=requests.get(url)
if resp.status_code==200:
pass
else:
print("爬取完毕")
return False
html=resp.content.decode(beas)
return html
#输入选择类型后的ul,输出href列表
def hreflist(lis):
list=[]
for li in lis:
href=li.find("a").get("href")
list.append(href)
return list
def lislist(html):
Bea=BeautifulSoup(html,'html.parser')
ul=Bea.find("ul",class_="clearfix")
lis=ul.find_all('li')
return lis
#输入首页网址和图片所在网址,输出图片数据
def imgcontn(shou,ImgHtml):
Bea=BeautifulSoup(Html(shou+ImgHtml,'gbk'),'html.parser')
src=Bea.find("div",class_="photo-pic").find('a').find('img').get('src')
contn=requests.get(shou+src).content
return contn
if __name__=="__main__":
#选择要下载图片的类型
nums=1
type=input("请选择要下载的类型:['我都要','风景','美女','游戏','动漫','影视','汽车','动物','人物','美食','宗教','背景']\n输入:")
types={'我都要':'/','风景':'/4kfengjing/','美女':'/4kmeinv/','游戏':'/4kyouxi/','动漫':'/4kdongman/','影视':'/4kyingshi/','汽车':'/4kqiche/','动物':'/4kdongwu/','人物':'/4krenwu/','美食':'/4kmeishi/','宗教':'/4kzongjiao/','背景':'/4kbeijing/'}
nums=input("\n请选择要下载的页数(一页20张):")
typeurl=types.get(type)
url="https://pic.netbian.com"
if os.path.isdir('./images'):
print('已经有image目录了\n')
else:
os.mkdir('./images')
i=0
dir=[]
endurl=''
for num in range(1,int(nums)+1):
if num==1:
pass
else:
endurl='index_{0}.html'.format(num)
if Html(url+typeurl+endurl,'gbk'):
html=Html(url+typeurl+endurl,'gbk')#选过类型后的html
lis=lislist(html)#html中找到li列表
hrefs=hreflist(lis)#li列表中找href列表
for href in hrefs:#遍历href列表
contn=imgcontn(url,href)
with open('./images/'+href.split('/')[-1].split('.html')[0]+'.jpg','wb') as f:
f.write(contn)
i=i+1
print('已经完成',i,'个')
print('第',num,'页下载完毕')
else:
pass
print('全部下载完毕\n')