python批量下载图片

我比较菜,这点代码写了一下午,希望对你有帮助。

#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')

上一篇:Python分别用单线程,多线程,异步协程爬取一部小说,最快仅需要5s


下一篇:Oracle常用语句