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: [email protected]
# 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)
时间: 2024-10-05 05:47:32

pyspider—爬取下载图片的相关文章

[Python_scrapy图片爬取下载]

welcome to myblog Dome地址 爬取某个车站的图片 item.py 中 1.申明item 的fields class PhotoItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() image_urls = scrapy.Field() images = scrapy.Field() pass spider 的image.py 导入头文件 from Phot

一个咸鱼的Python爬虫之路(三):爬取网页图片

学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图.所以我找了这个网站http://www.ivsky.com 网站里面有很多的图集,我们就找你的名字这个图集来爬取 http://www.ivsky.com/bizhi/yourname_v39947/ 来看看这个页面的源代码: 可以看到我们想抓取的图片信息在<li> 里面然后图片地址在img里面那么我们这里可以用Beautifu

Scrapy爬取美女图片 (原创)

有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用python爬取慕课网的视频,是根据爬虫的机制,自己手工定制的,感觉没有那么高大上,所以我最近玩了玩 python中强大的爬虫框架Scrapy. Scrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便.Scrapy 使用 Twisted 这个异步网络库来处理

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

上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scrapy官方文档的过程中,发现Scrapy自身实现了图片和文件的下载功能,不需要咱们之前自己实现图片的下载(不过原理都一样). 在官方文档中,我们可以看到下面一些话:Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines .

一个简单的网络爬虫-从网上爬取美女图片

CrawlerPicture.java 文件 package com.lym.crawlerDemo; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import

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

首先说一声,让大家久等了.本来打算520那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复了一些bug(现在肯定有人会说果然是单身狗). 好了,废话不多说,咱们进入今天的主题.上两篇 Scrapy爬取美女图片 的文章,咱们讲解了scrapy的用法.可是就在最近,有热心的朋友对我说之前的程序无法爬取到图片,我猜应该是煎蛋网加入了反爬虫机制.所以今天讲解的就是突破反爬虫机制的上篇 代理

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

上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://5912119.blog.51cto.com/5902119/1771391 这一篇我想写写如何爬取百度图片的爬虫,这个爬虫也是:搜搜gif(在线制作功能点我) 的爬虫代码,其实爬虫整体框架还是差不多的,但就是会涉及到图片的的一些处理,还是花费了我不少时间的,所以我请阅读的本爬虫的孩子还是认真一些,毕竟程序猿都不容易啊.好的,我也不想多说,爬虫的代码我会分享到去转盘网,想下载本爬虫代码的孩子请点我下载,如果没有下

爬取动态图片—以百度图片为例

一:何谓动态加载图片 所谓动态加载图片即指html刚加载时,图片时没有的,然后通过json发生有关图片的数据,在插入到html里面去,以到底快速打开网页的目的,那么问题来了?我们如何找到加载文件的json文件呢?而这个问题正是我们实现爬取百度图片的第一步,让小可爱告诉你怎么做吧. 我们以表情包这个关键字为例,如下图 小可爱在百度图片搜索表情包来到上图页面,然后按F12来到开发者页面, 我们点击二个json文件 如: ①https://image.baidu.com/search/acjson?t

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

title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true 前言 其实,抓取图片和抓取小说内容没有任何本质的区别,步骤都是一样的. 但是图片读取的时候,会遇到一个盗链问题.这个问题是花的解决时间最长的. 环境 语言: python3 操作系统: mac 10.12.16 自定义工具包:soup_tool 其依赖工具如下: from urllib import