【pyhon】nvshens圖片批量下載爬蟲1.01

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

輸出:html

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圖片批量下載爬蟲工做完畢.

:)python

相關文章
相關標籤/搜索