爬虫-Scrapy框架
Scrapy 是 Python 领域专业的爬虫开发框架,已经完成爬虫程序的大部分通用工具,因此 Scrapy 开发爬虫项目既简单又方便。
简介
异步处理框架,可配置和可扩展程度非常高,Python中使用最广泛的爬虫框架
安装
Ubuntu
传统方式
安装依赖库
1
sudo apt-get install python-dev build-essential libssl-dev libffi-dev liblxml2 libxml2-dev libxslt1-dev zlib1g-dev
升级pyasn1模块(可选)
1
sudo pip3 install pyasn1==0.4.4
安装Scrapy
1
sudo pip3 install Scrapy
验证安装完成
1
scrapy version
conda方式
见下面的Windows安装方式
Windows Or Mac
1 | conda install Scrapy |
框架的组成
组件 | 英文名 | 功能 |
---|---|---|
引擎 | Engine | 整个框架的核心 |
调度器 | Scheduler | 接收从引擎发过来的URL,入队列 |
下载器 | Downloader | 下载网页源码,返回爬虫程序 |
项目管道 | Item Pipeline | 数据处理 |
下载器中间件 | Downloader Middlewares | 处理引擎与下载器直接按的请求和响应 |
蜘蛛中间件 | Spider Middlewares | 处理爬虫程序和输入的响应和输出结果以及新的请求 |
Item | 定义爬取结果的数据结构,爬取的数据会被数值为Item对象 |
爬取流程
1 | sequenceDiagram |
制作Scrapy爬虫项目的步骤
新建项目
1
scrapy startproject Lianjia
明确目标(item.py)
1
2
3class LianjiaItem(scrapy.Item):
houseName = scrapy.Field()
housePrice = scrapy.Field()制作爬虫程序
1
cd Lianjia
1
scrapy startproject LianjiaSpider lianjia.com
1
2
3
4
5
6
7
8
9
10class LianjiaSpider(scrapy.Spider):
# 爬虫名
name = 'lianjia'
# 允许域
allowed_domains = ['lianjia.com']
# 起始URL
start_urls = ['']
def parse(self,response):
pass处理数据pipeline
1
2
3class LianjiaPipeline(object):
def process_item(self,item,spider):
return item配置setting.py
下面专门提到运行爬虫项目
1
scrapy crawl 蜘蛛名
项目目录文件详解
1 | ├── test |
settings.py 详解
1 | # 项目名称 |
PyCharm运行Scrapy
创建启动脚本
创建一个名字为run
的py文件 和scrapy.cfg
同目录编辑脚本
1
2from scrapy import cmdline
cmdline.execute("scrapy crawl LianjiSpider".split())PyCharm配置
Run -> Editconfigurations -> + -> python
name:spider
Script:选择刚才的Run脚本
working directory: 改为项目路径打开
Run.py
, 右键运行