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库爬取美女图片,其中采用了多线程,文件读写,目录匹配,正则表达式解析,字符串拼接等知识,这些都是前文提到的,综合运用一下,写个爬虫示例爬取美女图片.先 ...
随机推荐
- html禁止选中文字
简单的办法,可以直接使用CSS: div { -moz-user-select:none; -webkit-user-select:none; user-select:none; } 嗯,就酱~
- linux下的时间管理概述
2017/6/21 时间这一概念在生活中至关重要,而在操作系统中也同样重要,其在系统中的功能绝不仅仅是给用户提供时间这么简单,内核的许多机制都依赖于时间子系统.但凡是要在某个精确的时间执行某个事件,必 ...
- KVm中EPT逆向映射机制分析
2017-05-30 前几天简要分析了linux remap机制,虽然还有些许瑕疵,但总算大致分析的比较清楚.今天分析下EPT下的逆向映射机制.EPT具体的工作流程可参考前面博文,本文对于EPT以及其 ...
- Loadrunner中参数化取值方式分析
Loadrunner中参数化取值依赖两个维度: 1.取值顺序分为“顺序”“随机”“唯一”. select next row:Sequential , Random,unique 2.更新值时分为 ...
- Oracle DB 使用RMAN将数据库移植到ASM存储区
1. 完全关闭数据库. 2. 关闭数据库并修改服务器参数文件,以使用Oracle Managed Files (OMF). 3. 编辑并执行以下RMAN 脚本: STARTUP NOMOUNT; RE ...
- matlab手写神经网络实现识别手写数字
实验说明 一直想自己写一个神经网络来实现手写数字的识别,而不是套用别人的框架.恰巧前几天,有幸从同学那拿到5000张已经贴好标签的手写数字图片,于是我就尝试用matlab写一个网络. 实验数据:500 ...
- koa2链接mongodb
数据库使用的mongodbmongodb下载:https://www.mongodb.com/mongodb GUI:https://robomongo.org/ 使用中间件koa来搭建框架使用中间件 ...
- RabbitMQ、Memcache、Redis RabbitMQ
RabbitMQ 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是一种基于网络的消息传输协议,它能够在应用或组织之 ...
- 2017浙江省赛 A - Cooking Competition ZOJ - 3958
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3958 题目: "Miss Kobayashi's Drag ...
- Spring-1-H Number Sequence(HDU 5014)解题报告及测试数据
Number Sequence Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Pro ...