中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python爬蟲實現獲取動態gif格式搞笑圖片的方法示例

發布時間:2020-10-08 20:18:18 來源:腳本之家 閱讀:137 作者:楓奇 欄目:開發技術

本文實例講述了Python爬蟲實現獲取動態gif格式搞笑圖片的方法。分享給大家供大家參考,具體如下:

有時候看到一些喜歡的動圖,如果一個個取保存挺麻煩,有的網站還不支持右鍵保存,因此使用python來獲取動態圖,就看看就很有意思了

本次爬取的網站是  居然搞笑網 http://www.zbjuran.com/dongtai/list_4_1.html

思路:

獲取當前頁面內容

查找頁面中動圖所代表的url地址

保存這個地址內容到本地

如果想爬取多頁,就可以加上一個循環條件

代碼:

#!/usr/bin/python
#coding:utf-8
import urllib2,time,uuid,urllib,os,sys,re
from bs4 import BeautifulSoup
reload(sys)
sys.setdefaultencoding('utf-8')
#獲取頁面內容
def getHtml(url):
    try:
        print url
        html = urllib2.urlopen(url).read()#.decode('utf-8')#解碼為utf-8
    except:
        return
    return html
#獲取動圖所代表的url列表
def getImagUrl(html):
    if not html:
        print 'nothing can be found'
        return
    ImagUrlList=[]
    soup=BeautifulSoup(html,'lxml')
    #獲取item列表
    items=soup.find("div",{"class":"main"}).find_all('div',{'class':'item'})
    for item in items:
        target={}
        #通過if語句,過濾廣告項
        if item.find('div',{"class":"text"}):
            #獲取url
            imgurl=item.find('div',{"class":"text"}).find('img').get('src')
            target['url']=imgurl
            #獲取名字
            target['name']=item.find('h4').text
            ImagUrlList.append(target)
    return ImagUrlList
#下載圖片到本地
def download(author,imgurl,typename,pageNo):
    #定義文件夾的名字
    x = time.localtime(time.time())
    foldername = str(x.__getattribute__("tm_year"))+"-"+str(x.__getattribute__("tm_mon"))+"-"+str(x.__getattribute__("tm_mday"))
    download_img=None
    picpath = 'Jimy/%s/%s/%s' % (foldername,typename,str(pageNo))
    filename = author+str(uuid.uuid1())
    pic_type=imgurl[-3:]
    if not os.path.exists(picpath):
        os.makedirs(picpath)
    target = picpath+"/%s.%s" % (filename,pic_type)
    print "動圖存貯位置:"+target
    download_img = urllib.urlretrieve(imgurl, target)#將圖片下載到指定路徑中
    print "圖片出處為:"+imgurl
    return download_img
#退出函數
def myquit():
    print "Bye Bye!"
    exit(0)
def start(pageNo):
    targeturl="http://www.zbjuran.com/dongtai/list_4_%s.html" % str(pageNo)
    html = getHtml(targeturl)
    urllist=getImagUrl(html)
    for imgurl in urllist:
        download(imgurl['name'],imgurl['url'],'搞笑動圖',pageNo)
if __name__ == '__main__':
    print '''
            *****************************************
            **  Welcome to Spider of GIF     **
            **   Created on 2017-3-16      **
            **   @author: Jimy         **
            *****************************************'''
    pageNo = raw_input("Input the page number you want to scratch (1-50),please input 'quit' if you want to quit\n\
請輸入要爬取的頁面,范圍為(1-100),如果退出,請輸入Q>\n>")
    while not pageNo.isdigit() or int(pageNo) > 50 or int(pageNo) < 1:
        if pageNo == 'Q':
            myquit()
        print "Param is invalid , please try again."
        pageNo = raw_input("Input the page number you want to scratch >")
    print pageNo
    start(pageNo)
    #第一次爬取結束
    pageNo = raw_input("Input the page number you want to scratch (1-50),please input 'quit' if you want to quit\n\
請輸入總共需要爬取的頁面,范圍為(1-5000),如果退出,請輸入Q>\n>")
    while not pageNo.isdigit() or int(pageNo) > 5000 or int(pageNo) < 1:
        if pageNo == 'Q':
            myquit()
        print "Param is invalid , please try again."
        pageNo = raw_input("Input the page number you want to scratch >")
    #循環遍歷,爬取多頁
    for num in xrange(int(pageNo)):
        start(str(num+1))

結果如下:

                        *****************************************
                        **    Welcome to Spider of GIF         **
                        **      Created on 2017-3-16           **
                        **      @author: Jimy                  **
                        *****************************************
Input the page number you want to scratch (1-50),please input 'quit' if you want to quit
請輸入要爬取的頁面,范圍為(1-100),如果退出,請輸入Q>
>1
1
http://www.zbjuran.com/dongtai/list_4_1.html
動圖存貯位置:Jimy/2017-3-16/搞笑動圖/1/真是艱難的選擇。3f0fe8f6-09f8-11e7-9161-f8bc12753d1e.gif
圖片出處為:https://cache.yisu.com/upload/information/20200622/113/41189.gif
動圖存貯位置:Jimy/2017-3-16/搞笑動圖/1/這么賤會被打死吧……3fa9da88-09f8-11e7-9161-f8bc12753d1e.gif
圖片出處為:https://cache.yisu.com/upload/information/20200622/113/41190.gif
動圖存貯位置:Jimy/2017-3-16/搞笑動圖/1/一看就是印度……4064e60c-09f8-11e7-9161-f8bc12753d1e.gif
圖片出處為:https://cache.yisu.com/upload/information/20200622/113/41191.gif
動圖存貯位置:Jimy/2017-3-16/搞笑動圖/1/新垣結衣的正經工作臉414b4f52-09f8-11e7-9161-f8bc12753d1e.gif
圖片出處為:https://cache.yisu.com/upload/information/20200622/113/41192.gif
動圖存貯位置:Jimy/2017-3-16/搞笑動圖/1/妹子這是在搖什么的421afa86-09f8-11e7-9161-f8bc12753d1e.gif
圖片出處為:https://cache.yisu.com/upload/information/20200622/113/41193.gif
Input the page number you want to scratch (1-50),please input 'quit' if you want to quit
請輸入總共需要爬取的頁面,范圍為(1-5000),如果退出,請輸入Q>
>Q
Bye Bye!

最終就能夠獲得動態圖了

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python正則表達式用法總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽州县| 普陀区| 文成县| 宜州市| 耒阳市| 云霄县| 基隆市| 翁牛特旗| 武威市| 义乌市| 石泉县| 上饶县| 北海市| 沅江市| 师宗县| 潞城市| 绥芬河市| 星子县| 同心县| 广州市| 广水市| 文成县| 岐山县| 屏东县| 西华县| 宁波市| 华池县| 东源县| 博乐市| 奉新县| 天镇县| 新野县| 峨山| 安徽省| 罗平县| 兰溪市| 团风县| 兴仁县| 施甸县| 麻阳| 合水县|