本文实例讲述了Python爬虫实现获取动态gif格式搞笑图片的方法。分享给大家供大家参考,具体如下:
有时候看到一些喜欢的动图,如果一个个取保存挺麻烦,有的网站还不支持右键保存,因此使用python来获取动态图,就看看就很有意思了
本次爬取的网站是,居然搞笑网
<>强思路:强>
获取当前页面内容
查找页面中动图所代表的url地址
保存这个地址内容到本地
如果想爬取多页,就可以加上一个循环条件
<强>代码:强>
# !/usr/bin/python utf - 8编码: 进口urllib2、时间、uuid urllib,操作系统,系统,再保险 从bs4进口BeautifulSoup 重载(系统) sys.setdefaultencoding (“utf - 8”) #获取页面内容 def getHtml (url): 试一试: 打印的url html=urllib2.urlopen (url) .read () # .decode (utf - 8) #解码为utf - 8 除了: 返回 返回的html #获取动图所代表的url列表 def getImagUrl (html): 如果不是html: 打印任何可以找到的 返回 ImagUrlList=[] 汤=BeautifulSoup (html、lxml的) #获取物品列表 项=soup.find (" div ",{“类”:“主要”}).find_all (" div "{“类”:“项”}) 项目的项目: 目标={} #通过如果语句,过滤广告项 如果item.find (" div "{“类”:“文本”}): #获取url imgurl=item.find (" div "{“类”:“文本”});(img) . get (“src”) 目标的url=imgurl #获取名字 目标['名字']=item.find (h4)。text ImagUrlList.append(目标) 返回ImagUrlList #下载图片到本地 def下载(作者、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=没有 picpath=' Jimy/% s/% s/% s的% (foldername typename, str (pageNo)) 文件名=作者+ str (uuid.uuid1 ()) pic_type=imgurl [3:] 如果不是os.path.exists (picpath): os.makedirs (picpath) 目标=picpath +”/% s。% s“%(文件名,pic_type) 打印”动图存贮位置:“+目标 download_img=urllib。urlretrieve (imgurl、目标)#将图片下载到指定路径中 打印”图片出处为:“+ imgurl 返回download_img #退出函数 def myquit (): 打印“拜拜!” 退出(0) def开始(pageNo): targeturl=" http://www.zbjuran.com/dongtai/list_4_%s.html " % str (pageNo) html=getHtml (targeturl) urllist=getImagUrl (html) 在urllist imgurl: 下载(imgurl['名字'],imgurl“url”,“搞笑动图”,pageNo) if __name__==癬_main__”: 打印“ ***************************************** GIF * *的* *欢迎来到蜘蛛 * * 2017-3-16 * *上创建 * * @author: Jimy * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *” pageNo=raw_input(“输入你想要的页码(1-50),请输入“退出”如果你想退出\ n \ 请输入要爬取的页面,范围为(1 - 100),如果退出,请输入Q> \ n>”) 虽然不是pageNo.isdigit()或int (pageNo)比;50或int (pageNo) & lt;1: 如果pageNo==拔省? myquit () 打印”参数是无效的,请再试一次。” pageNo=raw_input(“输入页码你想抓祝辞”) 打印pageNo 开始(pageNo) #第一次爬取结束 pageNo=raw_input(“输入你想要的页码(1-50),请输入“退出”如果你想退出\ n \ 请输入总共需要爬取的页面,范围为(1 - 5000),如果退出,请输入Q> \ n>”) 虽然不是pageNo.isdigit()或int (pageNo)比;5000或int (pageNo) & lt;1: 如果pageNo==拔省? myquit () 打印”参数是无效的,请再试一次。” pageNo=raw_input(“输入页码你想抓祝辞”) #循环遍历,爬取多页 的num xrange (int (pageNo)): 开始(str (num + 1)) >之前结果如下:
,,,,,,,,,,,,,,,,,,,,,,,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
,,,,,,,,,,,,,,,,,,,,,,* *,,,欢迎来到蜘蛛GIF ,,,,,,,* *
,,,,,,,,,,,,,,,,,,,,,,* *,,,,,上创建2017 - 3 - 16,,,,,,,,,,* *
,,,,,,,,,,,,,,,,,,,,,,* *,,,,,@author: Jimy ,,,,,,,,,,,,,,,,* *
,,,,,,,,,,,,,,,,,,,,,,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
输入你想要的页码(1-50),请输入“退出”如果你想退出Python爬虫实现获取动态gif格式搞笑图片的方法示例