pyspider—爬取下载图片
以第一ppt网站为例:http://www.1ppt.com/
from pyspider.libs.base_handler import *
import urllib2,HTMLParser,re import 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 url
cont = 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.reason
return class MyHtmlParse(HTMLParser.HTMLParser):
def __init__(self,isIndex):
self.isIndex = isIndex;
HTMLParser.HTMLParser.__init__(self) def handle_starttag(self,tag,attrs):
#print tag
#print attrs if(self.isIndex):
if(tag == 'a'):
if(len(attrs) == 3):
#print attrs[0]
if(attrs[1][0] =='title'):
newUrl = host + attrs[0][1]
# print '找到一处图片的网页链接:',newUrl
global startHtml
startHtmlUrl = newUrl
getImageUrlByHtmlUrl(newUrl)
else:
#print tag
if(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 '找到一张图片:',imageUrl
downloadImage(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 m
parserIndex = 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.href
parse_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/python import 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 url
cont = 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.reason class MyHtmlParse(HTMLParser.HTMLParser):
def __init__(self,isIndex):
self.isIndex = isIndex;
HTMLParser.HTMLParser.__init__(self) def handle_starttag(self,tag,attrs):
#print tag
#print attrs if(self.isIndex):
if(tag == 'a'):
if(len(attrs) == 3):
#print attrs[0]
if(attrs[1][0] =='title'):
newUrl = host + attrs[0][1]
# print '找到一处图片的网页链接:',newUrl
global startHtml
startHtmlUrl = newUrl
getImageUrlByHtmlUrl(newUrl)
else:
#print tag
if(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 '找到一张图片:',imageUrl
downloadImage(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)
pyspider—爬取下载图片的更多相关文章
- [Python_scrapy图片爬取下载]
welcome to myblog Dome地址 爬取某个车站的图片 item.py 中 1.申明item 的fields class PhotoItem(scrapy.Item): # define ...
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
- 百度图片爬虫-python版-如何爬取百度图片?
上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...
- Scrapy-多层爬取天堂图片网
1.根据图片分类对爬取的图片进行分类 开发者选项 --> 找到分类地址 爬取每个分类的地址通过回调函数传入下一层 name = 'sky'start_urls = ['http: ...
- python3爬取女神图片,破解盗链问题
title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true ...
- Scrapy爬取美女图片第三集 代理ip(上) (原创)
首先说一声,让大家久等了.本来打算那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复 ...
- Scrapy爬取美女图片第四集 突破反爬虫(上)
本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...
- Scrapy爬取美女图片续集 (原创)
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用.(我的新书< ...
- python学习(十七) 爬取MM图片
这一篇巩固前几篇文章的学到的技术,利用urllib库爬取美女图片,其中采用了多线程,文件读写,目录匹配,正则表达式解析,字符串拼接等知识,这些都是前文提到的,综合运用一下,写个爬虫示例爬取美女图片.先 ...
随机推荐
- flask建立数据模型数据类型
https://blog.csdn.net/happyanger6/article/details/53947162 https://blog.csdn.net/happyanger6/article ...
- imToken 测评通关攻略
imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区 ...
- 解决启动Tomcat时遇到INFO: Destroying ProtocolHandler ["ajp-apr-8009"]
问题描述: 启动Tomcat时,出现INFO: Destroying ProtocolHandler ["ajp-apr-8009"]等信息 这说明端口号被占用了... 解决方法: ...
- swagger接口变动监控
版本与版本之间迭代,总会发生接口的变化,而这些变化开发不会都告诉测试,测试需要把全部接口检查一遍,这样就降低了测试效率. 为了解决这个问题,结合公司实际项目进行了以下设计: 1.对比测试环境swagg ...
- IPFS搭建&集群
下载go-ipfs wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.17/go-ipfs_v0.4.17_linux-amd64 ...
- 谷歌浏览器不能打开本地HTML文件
打开浏览器右上角菜单——>更多工具——>扩展程序——>将Axure RP Extension For Chrome 0.62.crx文件拖入——>成功后,勾选相关选项 文件的下 ...
- 微信小程序组件slider
表单组件slider:官方文档 Demo Code: var pageData = {} for (var i = 1; i < 5; i++) { (function (index) { pa ...
- 如何获知PHP程序占用多少内存(复制)
想要知道编写的 PHP 脚本需要占用多少内存么?很简单,直接使用 PHP 查看当前分配给 PHP 脚本的内存的函数 memory_get_usage() 就可以了 下面是使用示例: 复制代码 代码如下 ...
- 【源码分享】仿网易客户端源码效果 apkbus的~
http://www.apkbus.com/forum.php?mod=viewthread&tid=184867 内容我就不说了,直接点开看吧.
- 三张图看遍Linux性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg在最近的 LinuxCon NA 2014 大 ...