今天加班啊,苦啊!!

无聊,用python写了一个抓图片的爬虫,感觉很不错啊,哈哈

先贴上代码:(python 版本:2.7.9)

__author__ = 'bloodchilde'import  urllib
import urllib2
import  re
import osclass Spider:def __init__(self):self.siteUrl="http://sc.chinaz.com/biaoqing/"self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'self.headers = { 'User-Agent' : self.user_agent }def getPage(self,pageIndex):url = self.siteUrl+"index_"+str(pageIndex)+".html"request = urllib2.Request(url,headers = self.headers)response = urllib2.urlopen(request)return response.read().decode("utf-8")def getContents(self,pageIndex):page = self.getPage(pageIndex)pattern = re.compile('''<div.*?class='num_1'.*?>.*?<p>.*?<a.*?href='.*?'.*?target='_blank'.*?title='(.*?)'.*?><img.*?src2="(.*?)".*?>.*?</a>.*?</p>.*?</div>''',re.S)items = re.findall(pattern,page)contents=[]for item in items:contents.append([item[0],item[1]])return contentsdef mk_dir(self,path):isExisist = os.path.exists(path)if not isExisist:os.makedirs(path)return Trueelse:return Falsedef downImage(self,url,dirname):imageUrl = urlrequest = urllib2.Request(imageUrl,headers = self.headers)response = urllib2.urlopen(request)imageContents = response.read()urlArr = imageUrl.split(u"/")imageName = str(urlArr[len(urlArr)-1])print imageNamepath = u"C:/Users/bloodchilde/Desktop/image_python/"+dirnameself.mk_dir(path)imagePath = path+u"/"+imageNamef = open(imagePath, 'wb')f.write(imageContents)f.close()def downLoadAllPicture(self,PageIndex):contents = self.getContents(PageIndex)for list in contents:dirname = list[0]imageUrl = list[1]self.downImage(imageUrl,dirname)demo = Spider()for page in range(3,100):demo.downLoadAllPicture(page)

效果如下:

下载这么多图片,瞬间搞定,下面来分析一下程序:


首先,我的目标网页是:

http://sc.chinaz.com/biaoqing/index_3.html

程序功能是到这个网页下载表情图片

程序思路:

1,获取网页的源码信息

2,解析源码获取要下载的图片的URL(正则处理)

3,重新定位url向这个图片的url发起请求获取url的信息,这个url信息其实就是图片内容contents

4,通过上面获取的图片的URL还可以获取图片的名称(带后缀名) imageName

5,在本地创建文件以获取的imageName命名,将内容contents写进文件即可


打开http://sc.chinaz.com/biaoqing/index_3.html,查看源码,找到要处理的代码段如下:


对应的正则是:

'''<div.*?class='num_1'.*?>.*?<p>.*?<a.*?href='.*?'.*?target='_blank'.*?title='(.*?)'.*?><img.*?src2="(.*?)".*?>.*?</a>.*?</p>.*?</div>'''

我们要从代码段中获取title和src2,title作为文件夹名,src2作为目标图片URL

是不是感觉很简单啊。。。。

python 爬虫批量下载图片相关推荐

  1. python爬虫批量下载图片

    使用python的urllib库和正则表达式爬取 学习地址(自行base64解密):aHR0cDovL3BpYy5uZXRiaWFuLmNvbQ== 网站图片,支持批量下载. (本文仅供学习交流,请勿 ...

  2. python爬虫批量下载“简谱”

    python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...

  3. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  4. 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...

  5. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  6. python怎么批量下载图片_怎样批量下载在线图片?

    原标题:怎样批量下载在线图片? 大家早啊,我是云景,以前分享过很多关于批量下载图片的技巧,有使用插件程序的,有使用工具的. 之前也教过大家怎么使用F12开发者 今天给大家分享的是,使用Python来批 ...

  7. python multiprocessing 批量下载图片+tqdm

    紧接着我的上一篇博客:用tqdm可视化loop过程,我将继续探索multiprocessing 批量下载图片+tqdm 首先,是安装multiprocessing模块了,注意在python3下pip ...

  8. python爬虫 批量下载高清大图

    文章目录 前言 下载免费高清大图 下载带水印的精选图 代码与总结 前言 在上一篇写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的情况下实现了图虫创意无水印高清小 ...

  9. 第二弹!python爬虫批量下载高清大图

    文章目录 前言 下载免费高清大图 下载带水印的精选图 代码与总结 前言 在上一篇写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的情况下实现了图虫创意无水印高清小 ...

最新文章

  1. linux insight 使用教程,Insight API开源项目分析
  2. Android重写FragmentTabHost来实现状态保存
  3. 文巾解题 1877. 数组中最大数对和的最小值
  4. android ble 实现自动连接,Android:自动重新连接BLE设备
  5. SKYLINE UVALive - 4108
  6. luoguP1742 最小圆覆盖
  7. 全程软件测试之测试需求分析与计划(3)
  8. rest 网络设计开发,降低复杂性设计方案
  9. 准备系统地学习一下Python
  10. 印刷体汉字识别matlab实现,如何用MATLAB仿真印刷体汉字识别系统?
  11. ssh 连接访问被拒绝
  12. 开启灯光就是近光吗_自动大灯会自动调远近光吗
  13. 如何在PPT中制作动态图表,学会这种方法实在太简单
  14. ES复杂分组同时多聚合统计实现(java)
  15. JAVA游戏引擎!FXGL 教程 总目录
  16. 安卓机器人做图软件_机器人管理与开发软件RoboStudio出安卓版本啦~
  17. 什么是软件测试?软件测试的目的和流程是什么?——入门软件测试
  18. vscode 解决端口被占用问题
  19. 成都Java开发工程师工资有多高
  20. DAM | 提升品牌自播引流能力的「幕后」推手 | 数字内容管理 引流营销资源

热门文章

  1. 软件测试找不到工作怎么办
  2. wps怎么将字体嵌入文件_WPS文字怎么将字体嵌入文件让含有特殊字体的文档正常显示...
  3. jqgrid内容自动填充
  4. 《算法笔记》7.3 链表
  5. 事业环境因素和组织过程资产的理解与比较
  6. 肾囊肿会不会癌变呢?
  7. LookupError: unknown encoding: 65001
  8. 【3D目标检测】3D Object Detection for Autonomous Driving: A Survey
  9. source insight怎样恢复默认界面设置!
  10. optfine的jar文件打不开_我的世界MclauncherBN启动器