Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

一、”5+2”结构

5+2

1.Engine(引擎)

控制所有模块之间的数据流,根据条件触发事件

不需要用户修改

2.Downloader(下载器)

根据请求下载网页

不需要用户修改

3.Scheduler(调度器)

对所有爬取请求进行调度管理

不需要用户修改

4.Downloader Middlewares(下载器中间件)

处理引擎与下载器之间的请求及响应

5.Spider(蜘蛛)

解析Downloader返回的响应(Response)
产生爬取项(scraped item)
产生额外的爬取请求(Request)

用户编写(配置)

6.Item Pipelines(项目管道)

以流水线处理Spiders爬取项
由一组操作顺序组成类似流水线,每个操作是一个ItemPipeline类型
可能操作包括:清理、检验和查重爬取项中的HTML数据,将数据存储到数据库

用户编写(配置)

7.Spider Middleware(蜘蛛中间件)

处理蜘蛛的响应输入和请求输出

8.Scheduler Middlewares(调度中间件)

处理引擎发送到调度的请求和响应

二、Scrapy的安装

pip install scrapy

安装完成后,通过:

scrapy -h

测试安装完成

三、Scrapy命令

1.命令格式

>scrapy <command> [options] [args]

2.常用命令

命令说明格式
startproject创建一个新工程scrapy startproject [dir]
genspider创建一个爬虫scrapy genspider [options]
settings获得爬虫配置信息scrapy settings [options]
crawl运行一个爬虫scrapy crawl
list列出工程中所有爬虫scrapy list
shell启动URL调试命令行scrapy shell [url]

3.建立一个Scrapy爬虫

>scrapy startproject spiders_test
>cd spiders_test
>scrapy genspider test baidu.com

test.py:

# -*- coding: utf-8 -*-
import scrapy


class TestSpider(scrapy.Spider):
    name = 'test'
    #allowed_domains = ['baidu.com']
    start_urls = ['https://tieba.baidu.com/f?kw=wwe']

    def parse(self, response):
        fname = response.url.split('=')[-1]
        with open(fname, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s.' % name)

运行:

>scrapy crawl test
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐