用scrapy自动下载石原sama的豆瓣影人图集(727张图片,自动下载)

2015-10-07 05:08:26

本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议

前面我们说了单页面的图片下载,但是,往往,我们需要同时下载很多页面的图片,链接图片等等

这个用法最广泛的例子无外乎x色网站和新闻网站,因为你会发现,这些网站的图片大体是相似的,其实他们也没有下载图片到本地,而是共享一个图床,用爬虫爬取图床的url罢了

ok,话不多说,直接上代码:

实战,用scrapy自动爬取石原里美豆瓣图库


因为,我们有前面的积累了,很多东西我就不用多说了

首先,启动一个scrapy项目

scrapy startproject satomi_pic

首先是编写容器 items.py

# -*- coding: utf-8 -*-

import scrapy


class SatomiPicItem(scrapy.Item):

    image_urls=scrapy.Field()
    images=scrapy.Field()
  • 这次我们没有自己构造一个image_urls,因为这次我们目的是直接下载图片而不是再去学习他到底是怎么下载的

settings.py后面加这几句话

ITEM_PIPELINES={
    'scrapy.pipelines.images.ImagesPipeline':1
}
IMAGES_STORE='path_to_your_dir'

好,最后到我们的爬虫了:

老规矩,在我们编写爬虫前,先分析他的xpath:

pic

spiders文件夹里创建 satomi_spider.py,然后我们来编写 satomi_spider.py:

from scrapy.spiders import Rule,CrawlSpider
from scrapy.linkextractors import LinkExtractor
from scrapy.selector import Selector

from satomi_pic.items import SatomiPicItem

class SatomiSpider(CrawlSpider):
    name="satomi_pic_spider"

    download_delay=1

    allowed_domains=[]

    start_urls=[
        'http://movie.douban.com/celebrity/1016930/photo/1253599819/'
    ]

    rules=(
        Rule(LinkExtractor(allow=(r'http://movie.douban.com/celebrity/1016930/photo/\d+')),callback='parse_item',follow=True),

    )

    def parse_item(self,response):
        print response

        sel=Selector(response)

        item=SatomiPicItem()

        item['image_urls']=sel.xpath('//div[@class="photo-show"]/div[@class="photo-wp"]/a/img/@src').extract()

        yield item
  • 这里注意,因为douban是有防止恶意访问程序的,所以一定要写个 download_delay 不然,就会下载到一半就会被403forbbiden,这里要特别注意,因为笔者前两天这个博客的 ‘like’按键被人发现是和浏览次数一样的,所以他人便恶意地构造了大量的访问,笔者因为疏忽于这样的防止措施,不得不关掉了服务器,所以想这样的连续访问,如果不是压力测试,一般还是不要了

  • 这里,我们继承了 crawlspider,来做多网页爬取,所以,我们在 rules那里,写一个辨别链接的正则,这样,我们就可以使用callback进行我们所想要的操作了!

运行程序:

scrapy crawl satomi_pic_spider

于是,因为有 download_delay,所以我们爬取速度很慢,一步步地最后我们就可以得到:

pic

pic

pic

pic

这样我们又可以默默的欣(gui)赏(tian)我们的石原sama了~

同样的本次的源码也放在了github上:

https://github.com/salamer/satomipicspider

python爬虫 返回首页

Designed and built with all the love in the world by the Mr.ALJUN.

@SERVER BY NGINX AND POWER BY DIGITALOCEAN.

© COPYRIGHT BY GAGASALAMER 2015