pyspider—爬取下载图片
以第一ppt网站为例:http://www.1ppt.com/
from pyspider.libs.base_handler import * import urllib2,HTMLParser,reimport urllib2,HTMLParser,re#根url host = "http://www.1ppt.com/" #本地保存地址 localSavePath = '/data/girls/' #起始图片html地址 startHtmlUrl = '' #图片页Html的地址 htmlUrlList = [] #图片Url地址 imageUrlList = [] patter = '[0-9]*\.jpg'; #根据得到的图片路径URL将图片下载下来保存本地 def downloadImage(url):print urlcont = urllib2.urlopen(url).read()match = re.search(patter,url);if match:print '正在下载文件:',match.group()filename = localSavePath+match.group()f = open(filename,'w+')f.write(cont)f.close()else:print 'no match'#根据首页得到的图片集遍历每个图片集 def getImageUrlByHtmlUrl(htmlUrl):parser = MyHtmlParse(False)request = urllib2.Request(htmlUrl)try:response = urllib2.urlopen(request)content = response.read()parser.feed(content)except urllib2.URLError,e:print e.reasonreturnclass MyHtmlParse(HTMLParser.HTMLParser):def __init__(self,isIndex):self.isIndex = isIndex;HTMLParser.HTMLParser.__init__(self)def handle_starttag(self,tag,attrs):#print tag#print attrsif(self.isIndex):if(tag == 'a'):if(len(attrs) == 3):#print attrs[0]if(attrs[1][0] =='title'):newUrl = host + attrs[0][1]# print '找到一处图片的网页链接:',newUrlglobal startHtmlstartHtmlUrl = newUrlgetImageUrlByHtmlUrl(newUrl)else:#print tagif(tag == 'img'):# print attrs#print attrs[0][0]#print attrs[1][0]if(attrs[0][0] == 'src' and attrs[1][0] == 'alt' and attrs[0][1] ):imageUrl = attrs[0][1]match = re.search(patter,imageUrl)if match:print '找到一张图片:',imageUrldownloadImage(imageUrl)imageUrlList.append(imageUrl) #if (tag == 'a'): #if (len(attrs) == 4):##if (attrs[1] == ('class','next')):#nextUrl = host + attrs[2][1]#print '找到一处图片的网页链接:',nextUrl#global startHtmlUrl#if (startHtmlUrl != nextUrl):#getImageUrlByHtmlUrl(nextUrl)#分析首页得到每个图片集的链接 def parse_url_picture(indexUrl):#indexUrl = 'http://desk.zol.com.cn/meinv/'#分析首页得到每个图片集的链接#indexUrl = 'http://www.1ppt.com'm = urllib2.urlopen(indexUrl).read()#print mparserIndex = MyHtmlParse(True)parserIndex.feed(m)picture_website = r'http://www.1ppt.com/' class Handler(BaseHandler):crawl_config = {}@every(minutes=24 * 60)def on_start(self):self.crawl(picture_website, callback=self.index_page)return@config(age= 10 * 24 * 60 * 60)def index_page(self, response):for each in response.doc('a[href^="http"]').items():print each.attr.hrefparse_url_picture(each.attr.href)self.crawl(each.attr.href, callback=self.detail_page)return@config(priority=2)def detail_page(self, response):return{}
下面脚本是直接运行(不用放到爬虫平台上):
#coding: utf-8 ############################################################# # File Name: girls.py # Author: mylonly # mail: mylonly@gmail.com # Created Time: Mon 09 Jun 2014 09:23:18 PM CST ######################################################################### #!/usr/bin/pythonimport urllib2,HTMLParser,re#根url host = "http://1ppt.com" #本地保存地址 localSavePath = '/data/girls/' #起始图片html地址 startHtmlUrl = '' #图片页Html的地址 htmlUrlList = [] #图片Url地址 imageUrlList = [] patter = '[0-9]*\.jpg'; #根据得到的图片路径URL将图片下载下来保存本地 def downloadImage(url):print urlcont = urllib2.urlopen(url).read()match = re.search(patter,url);if match:print '正在下载文件:',match.group()filename = localSavePath+match.group()f = open(filename,'w+')f.write(cont)f.close()else:print 'no match'#根据首页得到的图片集遍历每个图片集 def getImageUrlByHtmlUrl(htmlUrl):parser = MyHtmlParse(False)request = urllib2.Request(htmlUrl)try:response = urllib2.urlopen(request)content = response.read()parser.feed(content)except urllib2.URLError,e:print e.reasonclass MyHtmlParse(HTMLParser.HTMLParser):def __init__(self,isIndex):self.isIndex = isIndex;HTMLParser.HTMLParser.__init__(self)def handle_starttag(self,tag,attrs):#print tag#print attrsif(self.isIndex):if(tag == 'a'):if(len(attrs) == 3):#print attrs[0]if(attrs[1][0] =='title'):newUrl = host + attrs[0][1]# print '找到一处图片的网页链接:',newUrlglobal startHtmlstartHtmlUrl = newUrlgetImageUrlByHtmlUrl(newUrl)else:#print tagif(tag == 'img'):# print attrsprint attrs[0][0]print attrs[1][0]if(attrs[0][0] == 'src' and attrs[1][0] == 'alt' and attrs[0][1] ):imageUrl = attrs[0][1]match = re.search(patter,imageUrl)if match:print '找到一张图片:',imageUrldownloadImage(imageUrl)imageUrlList.append(imageUrl) #if (tag == 'a'):#if (len(attrs) == 4):##if (attrs[1] == ('class','next')):#nextUrl = host + attrs[2][1]#print '找到一处图片的网页链接:',nextUrl#global startHtmlUrl#if (startHtmlUrl != nextUrl):#getImageUrlByHtmlUrl(nextUrl) #分析首页得到每个图片集的链接 indexUrl = 'http://www.1ppt.com' m = urllib2.urlopen(indexUrl).read() #print m parserIndex = MyHtmlParse(True) parserIndex.feed(m)
转载于:https://www.cnblogs.com/panliu/p/4849212.html
pyspider—爬取下载图片相关推荐
- python爬虫,爬取下载图片
python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...
- python3 scrapy实战(简单实现爬取下载图片原理)
这篇scrapy简单实现爬取并下载图片文章是为了后面一篇图片数据分析文章收集数据,后面我将做一个图片数据分析以及算法,这里顺便在复习一下之前学的scrapy语法以及原理,也是为了做个笔记和分享经验. ...
- json返回的img图片被原样输出_爬取百度图片,并下载至本地
爬取百度图片 一:本节目标 本次爬取的目标是百度图片,将图片下载到本地 二:准备工作 安装Scrapy.Python3 三:爬取思路 我们需要实现的是下载图片,所以需要获取图片的真实链接 四:爬取分析 ...
- 利用python爬取甲骨文图片及其对应的汉字含义,共1062个甲骨文,百度云下载
由于对古典文化较感兴趣,因此爬取甲骨文图片,及其对应的中文含义,因为网页是分目录的,因此分目录爬取. 数据来源网址: http://www.9610.com/jiagu/bian/index.htm, ...
- pyspider爬取免费正版图片网站Pixabay
前言: 许多网友贡献了不少的爬取妹子图片,豆瓣电影的教程,开始学爬虫的时候也少不了参考各位大佬的代码和填坑的经验!这次打算原创出一个爬取国外比较大的图片网站Pixabay 之所以选择该网站 第一:Pi ...
- 3秒爬取百度图片网站,批量下载各种图片
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一行数据 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- 小红书主页爬取_小红书图片爬取下载-小红书图片爬取便携版
小红书图片爬取是一款针对小红书图片下载软件.该软件虽然小巧,功能也不多,但是非常实用,该软件的使用不仅可以让用户快速浏览图片,还能快速爬取下载小红书某条链接中所有图片的软件.如有需要欢迎下载使用! 软 ...
- python爬取下载动态图片网站
这次我们来爬取一个图片网站 unsplash.com,为什么要选择这个网站呢?因为这个网站的所有图片都是js动态请求生成的,所以说一般的爬取肯定是不行的啦 ~ 一.工具 这次爬取我们需要借助一款工具代 ...
- Java爬取百度图片人脸识别下载高颜值小姐姐图片
前言: 最近想下载一些比较好看的妹子图片,但又不想去网上一张张的看,于是就想通过爬取图片进行人脸识别下载. 1.首先:在爬取图片时,通过Java请求时会遇到百度安全认证机制,在这里可以模拟浏览器的请求 ...
最新文章
- TCP编程函数和步骤
- LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数
- 我的2013年度总结
- 10.29T1 倍增+同余
- 【Android 逆向】ELF 文件格式总结 ★★★
- Windows API入门系列之六 -自己实现MessageBox
- 面向对象编程 - 练习题
- clickhouse原理解析与应用实践_Hybrid App (混合应用) 技术全解析 方案原理篇
- vue history模式Nginx配置
- 项目管理、bug管理工具 ---禅道使用流程
- 阿里一面,说说你对zookeeper中ZAB协议的理解?
- go nil json.marshal 完是null_字节跳动踩坑记#3:Go服务灵异panic
- Kubernetes 小白学习笔记(33)--kubernetes云原生应用开发-总结
- 水电缴费系统php源码_php水电费缴费管理系统
- 2020年全国工业固体废物、危险废物产生量、利用处置量及防治措施分析[图]
- python什么时候需要加引号_Python篇(一) 引号的作用及其区别
- baidu卫兵新版力推三级加快器 电脑一键提速50%
- 苹果状态栏HTML,有关HTML5页面在iPhoneX适配问题
- VSCode Tab按键失效,无法自动补全是什么情况?
- 增高助长~~~~~~~~~~~~
热门文章
- fopen文件路径怎么写_php的多功能文件操作类
- python sys模块_Python sys模块
- python exec_Python exec()
- ELK 使用filebeat替代Logstash收集日志
- weblogic-修改控制台登录密码
- shiro的源码分析(一)
- 使用WebView监控网页加载状况,PerformanceMonitor,WebViewClient生命周期
- highcharts插件使用总结和开发中遇到的问题及解决办法
- Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
- oracle表连接——处理连接过程中另外一张表没有相关数据不显示问题