引擎(Scrapy Engine)
调度器(Scheduler)
下载器(Downloader)
蜘蛛(Spiders)
项目管道(Item Pipeline)
爬取流程
针对每个URL, Scheduler->Downloader->Spider->
- 如果返回的是新的URL, 就会返回Scheduler
- 如果是需要保存的数据, 则会被放到item pipeline里面
Windows系统: pip install scrapy
创建项目
进入要存储代码的目录 (命令行下)
然后输入 scrapy startproject tutorial
目录结构
tutorial/ scrapy.cfg # 部署配置文件
tutorial/ # 项目的 Python 模块,从这里加入自己的代码 init.py
items.py # 项目的 item 定义文件
pipelines.py # 项目的 pipelines 文件
settings.py # 项目的 settings 文件
spiders/ # 放置spider代码的目录.
init.py
第一个Scrapy爬虫
我们以一个例子说明
爬取http://quotes.toscrape.com/
在项目根目录运行 scrapy genspider quotes quotes.toscrape.com 会在spider文件夹中自动生成如下文件
# -*- coding: utf-8 -*-
import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/']
def parse(self, response):
pass
start_requests 的快捷方式
# -*- coding: utf-8 -*-
import scrapy # 导入scrapy模块
class QuotesSpider(scrapy.Spider): # 定义爬虫类
name = 'quotes' # 命名
start_urls = ['http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/'
] # 爬取url
def parse(self, response): # 定义分析函数
page=response.url.split('/')[-2] # 取出页码
file_name='quotes-{}.html'.format(page) # 命名文件
with