scrapy 是一个 python 下面功能丰富、使用快捷方便的爬虫框架。用 scrapy 可以快速的开发一个简单的爬虫,官方给出的一个简单例子足以证明其强大:

快速开发 当然,开始前,可以先看看之前我们写过的 scrapy 入门文章 《Scrapy 从这里开始:Hello Scrapy》。
下面开始10分钟倒计时:
1. 初始化项目 scrapy startproject mzt cd mzt scrapy genspider meizitu meizitu.com
2. 添加 spider 代码: 定义 scrapy.Item ,添加 image_urls 和 images ,为下载图片做准备。
修改 start_urls 为初始页面, 添加 parse 用于处理列表页, 添加 parse_item 处理项目页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# -*- coding: utf-8 -*- import os import scrapy class PItem(scrapy.Item): image_urls = scrapy.Field() images = scrapy.Field() class MeizituSpider(scrapy.Spider): name = "meizitu" allowed_domains = ["meizitu.com"] start_urls = ( 'http://www.meizitu.com/a/list_1_1.html',) def parse(self, response): exp = u'//div[@id="wp_page_numbers"]//a[text()="下一页"]/@href' _next = response.xpath(exp).extract_first() next_page = os.path.join(os.path.dirname(response.url), _next) yield scrapy.FormRequest(next_page, callback=self.parse) for p in response.xpath('//li[@class="wp-item"]//a/@href').extract(): yield scrapy.FormRequest(p, callback=self.parse_item) def parse_item(self, response): item=PItem() urls = response.xpath("//div[@id='picture']//img/@src").extract() item['image_urls'] = urls return item |
3. 修改配置文件:
DOWNLOAD_DELAY = 1 # 添加下载延迟配置
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1} # 添加图片下载
pipeline IMAGES_STORE = '.' # 设置图片保存目录
4. 运行项目:
scrapy crawl meizitu
看,项目运行效果图

等待一会儿,就是收获的时候了


项目源码已经放到了 Github 上面,欢迎大家 star !
https://github.com/zhangheli/ScrapyLabs
