本文实例讲述了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('h3').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

图片出处为:http://www.zbjuran.com/uploads/allimg/170206/10-1f206135zhj.gif

动图存贮位置:jimy/2017-3-16/搞笑动图/1/这么贱会被打死吧……3fa9da88-09f8-11e7-9161-f8bc12753d1e.gif

图片出处为:http://www.zbjuran.com/uploads/allimg/170206/10-1f206135h35u.gif

动图存贮位置:jimy/2017-3-16/搞笑动图/1/一看就是印度……4064e60c-09f8-11e7-9161-f8bc12753d1e.gif

图片出处为:http://www.zbjuran.com/uploads/allimg/170206/10-1f20613543c50.gif

动图存贮位置:jimy/2017-3-16/搞笑动图/1/新垣结衣的正经工作脸414b4f52-09f8-11e7-9161-f8bc12753d1e.gif

图片出处为:http://www.zbjuran.com/uploads/allimg/170206/10-1f206135250553.gif

动图存贮位置:jimy/2017-3-16/搞笑动图/1/妹子这是在摇什么的421afa86-09f8-11e7-9161-f8bc12753d1e.gif

图片出处为:http://www.zbjuran.com/uploads/allimg/170206/10-1f20613493n03.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读取gif图片并显示_Python爬虫实现获取动态gif格式搞笑图片的方法示例相关推荐

  1. gmail cid图片不显示_python爬虫:爬取男生喜欢的图片

    任务目标: 1.抓取不同类型的图片 2.编写一个GUI界面爬虫程序,打包成exe重新文件 3.遇到的难点 1.分析如何抓取不同类型的图片 首先打开网站,可以看到有如下6个类型的菜单 在这里插入图片描述 ...

  2. python爬虫审查元素_python爬虫3——获取审查元素(板野友美吧图片下载)

    测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...

  3. python爬今日头条组图_python 爬虫抓取今日头条街拍图片

    1. 打开google浏览器,输入www.toutiao.com, 搜索街拍.html 2.打开开发者选项,network监看加载的xhr, 数据是ajax异步加载的,能够看到preview里面的da ...

  4. c语言 将url图片存到本地_python爬虫:爬取男生喜欢的图片

    任务目标: 1.抓取不同类型的图片 2.编写一个GUI界面爬虫程序,打包成exe重新文件 3.遇到的难点 1.分析如何抓取不同类型的图片 首先打开网站,可以看到有如下6个类型的菜单 在这里插入图片描述 ...

  5. python爬取学校题库_Python爬虫实战-获取某网站题库

    爬取*网站题库 import requests import re import time import html headers = { 'User-Agent':'Mozilla/5.0 (Win ...

  6. python爬虫下一页_python爬虫怎么获取下一页的url

    如何用python实现爬虫抓取网页时自动翻页在你没有任何喜欢的人的时候,你过得是最轻松快乐的,尽管偶尔会觉得孤单了点. 小编把网页的第一篇内容抓取好了,但是用python怎么抓取后面的 又如何停止那天 ...

  7. python读取图片文件显示_Python—图像基本操作以及图像格式转换

    关于图像处理的模块常用的有 PIL,openCV等,不过应为要处理 tif 格式的图片,故特来写下这篇博客. 关于安装模块 libtiff 直接pip install libtiff 安装模块,发现无 ...

  8. python加载图片并显示_python读取目录下所有的jpg文件,并显示第一张图片的示例...

    python读取目录下所有的jpg文件,并显示第一张图片的示例 如下所示: # -*- coding: UTF-8 -*- import numpy as np import os from scip ...

  9. python爬虫网页中的图片_Python爬虫爬取一个网页上的图片地址实例代码

    本文实例主要是实现爬取一个网页上的图片地址,具体如下. 读取一个网页的源代码: import urllib.request def getHtml(url): html=urllib.request. ...

最新文章

  1. jquery学习手记(8)遍历
  2. Python-OpenCV 处理图像(三):图像像素点操作
  3. 【289】◀▶ Python I/O 读写文本文件
  4. 1032 挖掘机技术哪家强 (20分)——15行代码AC
  5. 为什么parsefloat加出来还是字符串_Python 100天从新手到大师 | Day 7 字符串与数据结构...
  6. Docker最全教程之使用Tencent Hub来完成CI(十)
  7. Java多线程神器:join使用及原理
  8. Linux下安装JDK7和TomCat7
  9. aspell_如何使用Aspell在Linux命令行上检查拼写
  10. 数控铣削图案及编程_数控铣加工比普铣的优势,大多数人选择数控铣的原因
  11. python内置模块大全_python知识汇总(异常、内置模块和打包)
  12. intellij idea强制更新索引
  13. 你必须懂的Java对象引用
  14. 最佳实践之Android代码规范
  15. gRPC框架学习:6、Java+gRPC+maven+idea实例测试并打jar包
  16. 用python写一个倒计时器
  17. 博客在微博中怎么添加html,新浪微博怎么进博客
  18. 苹果电脑入门:必须掌握的快捷键
  19. 举例说明如何使用【聚合数据】的API接口
  20. springBoot入门总结(八)使用 jta+atomikos 整合springBoot分布式事务

热门文章

  1. UVa 220 黑白棋 算法竞赛入门经典 习题4-3
  2. 华硕ASUS RT-AC66U无线路由器部署NTP Server最佳实践
  3. 大规模机器集群-单机/集群/服务/机房/从零恢复的快速交付
  4. 微服务架构的简单实现-Stardust
  5. ElasticSearch之别名_aliases
  6. Jquery 模板插件 jquery.tmpl.js 的使用方法(2):嵌套each循环,temp调用(使用预编译的模板缓存)...
  7. 实现顺序串各种基本运算的算法
  8. php 如何创建一个对象,创建一个PHP对象 - BENNEE的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. 卫生院医保计算机管理制度,卫生院医保规章制度
  10. 计算机的文件打开记录怎么删,怎样删除最近使用的文档记录,电脑文档文件怎么删除...