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请求时会遇到百度安全认证机制,在这里可以模拟浏览器的请求 ...
最新文章
- list group by java_Java List集合实现MySQL Group By功能
- Linux下使用ssh密钥实现无交互备份
- BTree C 语言实例
- Spring4.X系列之IOC
- 录制失败因为媒体服务失败_具惠善减肥失败,竟然是因为它
- Boost:宏BOOST_ASSERT的使用实例
- 【详细分析】1023 Have Fun with Numbers (20 分)_20行代码AC
- redis——redis事务相关处理
- 最大公约数PHP算法,php计算两个整数的最大公约数常用算法小结
- 台达EH3系列PLC与温控器的MODBUS RTU通信例程
- C++五子棋人机对战
- 在ArcGIS中使用建模批量将nc文件转换为tif格式并进行裁剪
- 三个问题,弄清楚AI商业化
- Pythonblog_henry_dx_新浪博客
- 00018计算机应用基础2021,2021年全国自考10月00018计算机应用基础历年试题含答案.doc...
- (附源码)计算机毕业设计ssm高校社团管理系统
- 《Reading Wikipedia to Answer Open-Domain Questions》浅析
- 计算机应用最普遍的汉字字符编码是什么,计算机中目前最普遍使用的汉字字符编码是什么...
- 最新仿山楂岛留言源码+轻量级简约
- 辞旧迎新,2013年年终感言
热门文章
- 两个mysql主从同步_如何配置两个MySQL数据库之间的主从同步功能
- 定义域可以写成不等式吗_高一数学第一次月考考点之抽象函数定义域详解
- java靜態常量_Java靜態變量、靜態常量、靜態方法
- mysql mvcc 读写阻塞_mysql面试题MVCC原理事务隔离级别_aiailingfei的博客-CSDN博客
- linux tar命令压缩_Linux tar命令来压缩和提取文件
- Python字符串translate()
- java绝对路径和相对路径_Java文件路径,绝对路径和规范路径
- Win7系统主题路径
- 浅析C++开发工程师的薪资与发展
- 为什么被喷的总是产品经理?