# nvshens图片批量下载爬虫1.01
# 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕
from bs4 import BeautifulSoup
import requests
import time
import urllib.request

user_agent='Mozilla/4.0 (compatible;MEIE 5.5;windows NT)'
headers={'User-Agent':user_agent}

# 找到的图片
pictures=[]

# 不断追逐,直到结束
def crawl(url):
    print("爬取页面"+url);

    try:
        rsp=requests.get(url,headers=headers)
        soup= BeautifulSoup(rsp.text,'html.parser',from_encoding='utf-8')
        nextUrl="none";

        for divs in soup.find_all(class_="gallery_wrapper"):
            # 把找到的图片放到数组里去
            for img in divs.find_all('img'):
                print(img.get("src"))
                pictures.append(img.get("src"))

            #找下一页
            for link in divs.find_all('a',class_='a1'):
                if link.string=='下一页' and link.get("href").find('.html')!=-1:
                    nextUrl='https://www.nvshens.com'+link.get("href");

        #if len(pictures)>10:
        #    downloadPics()

        #time.sleep(5)

        if nextUrl!="none":
            print("前往下一页");
            crawl(nextUrl)
        else:
            print('爬取结束,开始下载...')
            downloadPics()
            print('下载结束,nvshens图片批量下载爬虫工作完毕.')
    except Exception as e:
        print("发生异常。重新爬行")# 不管怎么出现的异常,就让它一直爬到底
        crawl(url)

# 下载图片到本地
def downloadPics():
    while(len(pictures)>0):
        pic=pictures.pop()

        name=pic.split('/')[-1]

        try:
            rsp=urllib.request.urlopen(pic)
            img=rsp.read()
            with open(name,'wb') as f:
                f.write(img)
            print('图片'+pic+'下载完成')
        except Exception as e:
            print('图片'+pic+'下载异常,塞回重试')
            pictures.append(pic);

# Kickoff Start
# https://www.nvshens.com/g/22268/
crawl('https://www.nvshens.com/g/22210/')

输出:

C:\Users\horn1\Desktop\python\7>python downloadall.py
爬取页面https://www.nvshens.com/g/22210/
C:\Users\horn1\AppData\Local\Programs\Python\Python36\lib\site-packages\bs4\__init__.py:146: UserWarning: You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.
  warnings.warn("You provided Unicode markup but also provided a value for from_encoding. Your from_encoding will be ignored.")
https://img.onvshen.com:85/gallery/23789/22210/s/0.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/001.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/002.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/003.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/004.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/2.html
https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/006.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/007.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/008.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/009.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/3.html
https://img.onvshen.com:85/gallery/23789/22210/s/010.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/011.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/012.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/013.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/014.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/4.html
https://img.onvshen.com:85/gallery/23789/22210/s/015.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/016.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/017.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/018.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/019.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/5.html
https://img.onvshen.com:85/gallery/23789/22210/s/020.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/021.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/022.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/023.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/024.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/6.html
https://img.onvshen.com:85/gallery/23789/22210/s/025.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/026.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/027.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/028.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/029.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/7.html
https://img.onvshen.com:85/gallery/23789/22210/s/030.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/031.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/032.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/033.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/034.jpg
前往下一页
爬取页面https://www.nvshens.com/g/22210/8.html
https://img.onvshen.com:85/gallery/23789/22210/s/035.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/036.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/037.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/038.jpg
https://img.onvshen.com:85/gallery/23789/22210/s/039.jpg
爬取结束,开始下载...
图片https://img.onvshen.com:85/gallery/23789/22210/s/039.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/039.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/038.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/038.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/038.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/037.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/036.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/036.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/035.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/034.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/033.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/032.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/031.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/030.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/029.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/028.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/028.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/027.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/027.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/026.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/025.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/025.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/025.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/024.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/024.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/024.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/023.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/022.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/022.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/021.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/020.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/019.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/019.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/019.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/019.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/018.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/018.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/018.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/017.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/016.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/015.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/014.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/013.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/012.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/011.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/010.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/009.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/008.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/008.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/008.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/007.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/006.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/005.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/004.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/003.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/002.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/001.jpg下载完成
图片https://img.onvshen.com:85/gallery/23789/22210/s/0.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/0.jpg下载异常,塞回重试
图片https://img.onvshen.com:85/gallery/23789/22210/s/0.jpg下载完成
下载结束,nvshens图片批量下载爬虫工作完毕.

:)

【pyhon】nvshens图片批量下载爬虫1.01的更多相关文章

  1. Node.js nvshens图片批量下载爬虫1.01

    //====================================================== // nvshens图片批量下载爬虫1.01 // 用最近的断点续传框架改写原有1.0 ...

  2. 【pyhon】nvshens图片批量下载爬虫

    代码: # nvshens图片批量下载爬虫 from bs4 import BeautifulSoup import requests import time import urllib.reques ...

  3. Node.js mm131图片批量下载爬虫1.01 增加断点续传功能

    这里的断点续传不是文件下载时的断点续传,而是指在爬行页面时有时会遇到各种网络中断而从中断前的页面及其数据继续爬行的过程,这个过程和断点续传原理上相似故以此命名.我的具体做法是:在下载出现故障或是图片已 ...

  4. Node.js nvshens图片批量下载爬虫 1.00

    //====================================================== // www.nvshens.com图片批量下载Node.js爬虫1.00 // 此程 ...

  5. Node.js meitulu图片批量下载爬虫1.01版

    在 http://www.cnblogs.com/xiandedanteng/p/7614051.html 一文我曾经书写过一个图片下载爬虫,但原有程序不是为下载图片而设计故有些绕,于是稍微改写了一下 ...

  6. 【pyhon】nvshens按目录图片批量下载爬虫1.00(多线程版)

    # nvshens按目录图片批量下载爬虫1.00(多线程版) from bs4 import BeautifulSoup import requests import datetime import ...

  7. Node.js abaike图片批量下载爬虫1.02

    //====================================================== // abaike图片批量下载爬虫1.02 // 用最近的断点续传框架改写原有1.01 ...

  8. Node.js meitulu图片批量下载爬虫1.051

    原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...

  9. Node.js mzitu图片批量下载爬虫1.00

    又攻下一座山头. //====================================================== // mzitu图片批量下载爬虫1.00 // 2017年11月19 ...

随机推荐

  1. Java 接口和抽象类--缺省模式

    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...

  2. Dictionary<TKey,TValue>

    /* * 先将 key 和 bucket 的长度一起,经过简单的 hash 算法计算出元素应该放在哪个 bucket . * 但是,元素并不是放在 bucket 里面的,bucket 只是对元素存放位 ...

  3. TCP/IP——基础概念简记

    TCP/IP协议族的分层: 应用层 运输层 网络层 链路层 互联网地址(IP地址):互联网上的每个接口必须有一个唯一的Internet地址,它一定的结构,分为ABCDE五类.A类保留给政府机构,B类分 ...

  4. 什么情况下调用doGet()和doPost()?

    Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost().

  5. poj2485(Kruskal)

    这道题显然是一道最小生成树的问题,参考算法导论中的Kruskal方法,先对路径长度进行排序,然后使用并查集(Disjoint Set Union)来判断节点是否连通,记录连接所有节点的最后一条路径的长 ...

  6. [BZOJ3992][SDOI2015]序列统计(DP+原根+NTT)

    3992: [SDOI2015]序列统计 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 1888  Solved: 898[Submit][Statu ...

  7. bzoj 3165

    题意: 给出平面上一些线段,在线询问与x=x0相交的线段中,交点y最大的线段的标号,支持添加线段. 大概思路: 用线段树维护,线段树每个线段记录贯穿(左右端点在该区间外或上)的原线段中能覆盖其它贯穿该 ...

  8. 断点续传队列和本地持久化(iOS源码)

    // // ASIFormDataRequest.m // Part of ASIHTTPRequest -> http://allseeing-i.com/ASIHTTPRequest // ...

  9. TJU 2248. Channel Design 最小树形图

    最小树形图,測模版.... 2248.   Channel Design Time Limit: 1.0 Seconds   Memory Limit: 65536K Total Runs: 2199 ...

  10. Tasker 正则表达式测试器

    http://tieba.baidu.com/p/3533498043 本次分享的是一个正则表达式测试工具,用来方便快捷的进行Tasker正则方面的测试,一些比较复杂的匹配需要进行多次尝试才可能正确匹 ...