简介
Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,官网
Scrapy框架的整体架构和组成

- Scrapy Engine(引擎)
负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等 - Scheduler(调度器)
它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎 - Downloader(下载器)
负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理 - Spider(爬虫)
它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器) - Item Pipeline(管道)
它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方 - Downloader Middlewares(下载中间件)
是一个可以自定义扩展下载功能的组件 - Spider Middlewares(Spider中间件)
是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
安装
- 使用镜像安装
pip3 install -i https://pypi.douban.com/simple scrapy
- 创建项目
scrapy startproject testObject
- 项目目录如下
project/ scrapy.cfg # 项目配置文件 project/ # 项目的Python模块,将会从这里引用代码 __init__.py items.py # 项目 items 定义文件 middlewares.py # 项目中间件文件 pipelines.py # 项目 pipelines 文件 settings.py # 项目设置文件 spiders/ # 爬虫代码目录 __init__.py
基本使用
- 创建爬虫
scrapy genspider myspider(爬虫名) baidu.com(爬取域)
- test
常见test文件,直接运行即可运行爬虫from scrapy.cmdline import execute import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) execute(['scrapy','crawl','myspider'])
- 提取数据
- CSS选择器
-
XPath选择器
title_selector = response.xpath('//*[@id="wrapper"]/div[4]/div/div[2]/h1/text()') content_selector = response.xpath('// *[ @ id = "content"]/text()') content = '\n'.join(content_selector.extract()) article_item['content'] = content article_item['title'] = title_selector.extract_first()
网友评论