以第一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—爬取下载图片的更多相关文章

  1. [Python_scrapy图片爬取下载]

    welcome to myblog Dome地址 爬取某个车站的图片 item.py 中 1.申明item 的fields class PhotoItem(scrapy.Item): # define ...

  2. Scrapy爬取美女图片 (原创)

    有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...

  3. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

  4. Scrapy-多层爬取天堂图片网

    1.根据图片分类对爬取的图片进行分类 开发者选项 --> 找到分类地址         爬取每个分类的地址通过回调函数传入下一层 name = 'sky'start_urls = ['http: ...

  5. python3爬取女神图片,破解盗链问题

    title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true ...

  6. Scrapy爬取美女图片第三集 代理ip(上) (原创)

    首先说一声,让大家久等了.本来打算那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复 ...

  7. Scrapy爬取美女图片第四集 突破反爬虫(上)

     本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...

  8. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用.(我的新书< ...

  9. python学习(十七) 爬取MM图片

    这一篇巩固前几篇文章的学到的技术,利用urllib库爬取美女图片,其中采用了多线程,文件读写,目录匹配,正则表达式解析,字符串拼接等知识,这些都是前文提到的,综合运用一下,写个爬虫示例爬取美女图片.先 ...

随机推荐

  1. python基础-第十篇-10.2CSS基础

    CSS是Cascading Style Sheet的简称,中文为层叠样式表 属性和属性值用冒号隔开,以分号结尾 引入方式 行内式--在标签的style属性中设定CSS样式 <body> & ...

  2. VMwareWorkstations中安装ubuntu,apt install报E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

    ubuntu中apt安装软件python时报: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily un ...

  3. Linux的概念与体系(转)

    学linux就用它了 http://www.cnblogs.com/vamei/archive/2012/10/10/2718229.html

  4. java.util.Calendar

    package day14; import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import java.util.Cal ...

  5. js如何转义和反转义html特殊字符

    “<”如何反转义为“<”,“>”如何反转义为“>”,下面就介绍如何用js来实现这种类似的操作. //HTML转义 function HTMLEncode(html) { var ...

  6. GC的性能指标和内存容量配置原则

    一.GC性能指标吞吐量:应用花在非GC上的时间百分比GC负荷:与吞吐量相反,指应用花在GC上的时间百分比暂停时间:应用花在GC stop-the-world的时间GC频率反应速度:从一个对象变成垃圾到 ...

  7. 安装pip环境以及pip常用命令使用

    1.去到Python的官网下载pip包,下载地址是:https://pypi.python.org/pypi/pip#downloads 2.下载完成之后,解压到一个文件夹,用CMD控制台进入解压目录 ...

  8. yii2 商品上下架

    视图层 <td><?php if($value['is_on_sale'] == 1) {?><img src="../web/images/yes.gif&q ...

  9. 2.MySQL简介

    MySQL是一种DBMS,即它是一种数据库软件.   1.连接   为了连接到MyAQL,需要一下信息: ➡️主机名(计算机名)---如果连接到本地MySQL服务器,为localhost ➡️duan ...

  10. [HZNUOJ] 博

    Description 定义一个数字序列为“非下降序列”: 此处我们约定用$n\;表示数字序列的长度,下面定义在n \in [1, \infty]时有效$ $if \;\; n = 1:$ $\;\; ...