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库爬取美女图片,其中采用了多线程,文件读写,目录匹配,正则表达式解析,字符串拼接等知识,这些都是前文提到的,综合运用一下,写个爬虫示例爬取美女图片.先 ...
随机推荐
- 前端开发 - JQuery - 下
二十五.jquery的事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- Again Array Queries---Lightoj1100(循环暴力)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1100 题意是给你n个数,q个询问,每次求出 a 到 b(从0开始)最小差值: 直接暴力 ...
- virt-manager 操作 kvm虚拟机中鼠标不同步的问题
在/etc/libvirt/qemu下找到对应的xml配置文件 在<devices>标签下添加 <input type='tablet' bus='usb'/> 然后 vi ...
- 目标检测-Faster R-CNN
[目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...
- Spring-BeanFactory容器
Spring的BeanFactory容器 这是Spring中最简单地容器,它主要的功能是为依赖注入(DI)提供支持.这个容器接口在org.springframework.beans.factory.B ...
- (0.2.6)Mysql安装——编译安装
(0.2.6)Mysql安装——编译安装 待完善
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- thread msg
提取的nordic rf51xx/rf52xx sdk中的线程间消息通信机制,非常简洁 demo.c #include <stdio.h> #include <stdlib.h> ...
- SDUT1607:Number Sequence(矩阵快速幂)
题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1607 题目描述 A number seq ...
- Web UI 自动化单个xpath抓取插件详解
原文地址http://blog.csdn.net/kaka1121/article/details/51878346 单个控件获取 需求: 右键到某个控件上,就能获取到至多三个可以唯一定位该元素的相对 ...