框架结构:5+2结构
spiders模块-----engine模块-----downloader模块(联网)-----scheduler模块-----item pipelines模块
spiders负责接收用户请求(发给scheduler),处理downloader的response(发给item pipelines和scheduler)
engine是链接其他四个模块的中介
downloader负责将从scheduler收到的request联网下载,返回response给spiders
scheduler从spiders接收request并调度给downloader
item piplines处理spiders发送过来的response
只需要配置spiders和item piplines。Downloader Middleware、Spiders Middleware。
spider与接收用户、downloader,发送给scheduler(request)、item piplines(items)
downloader接收scheduler(request),发送给spider(response其中包含request和items)
scheduler接收spider,发送给downloader
item pipelines接收spider(item)。
中间件模块:engine和spiders中间、engine和downloader中间
数据流路径:
1.spiders -> engine -> scheduler (engine从spider获得requests,scheduler对请求进行调度)
2.scheduler -> engine -> downloader -> engine -> spiders
engine收到从sheduler的request,将它发给downloader,由downloader链接互联网下载,并且返回response给engine->spiders
3.spiders -> engine -> item pipelines&&scheduler
spiders处理响应,产生两个数据类型item和requests。requests是新的爬去请求,即网页其他链接也感兴趣,可以发给scheduler继续调度。
scrapy
startproject创建工程 scrapy startproject
genspider创建爬虫 scrapy genspider [options]
settings获得爬虫配置信息 scrapy settings [options]
crawl运行爬虫 scrapy crawl
list列出工程所有爬虫 scrapy list
shell启动URL调试命令行 scrapy shell [url]
demo/ 工程文件夹
---scrapy.cfg 部署服务器上时爬虫配置文件
---demo/ 自定义代码文件夹
---__init__.py 初始化脚本
---items.py Items代码模板(继承类)
---middlewares.py Middlewares代码模板(继承类)
---piplines.py Piplines代码模板(继承类)
---setting.py Scrapy爬虫的配置文件
---spiders/ Spiders代码模板目录(继承类)
意思是产生一个爬虫,爬虫名字是demo,爬取域名是https://python123.io
会在demo/demo/spiders/文件夹里生产一个demo.py文件
四步:创建工程和spider模板,编写Item Pipeline,编写Spider,优化配置策略
数据类型:Request类、Response类、Item类
Request对象表示一个HTTP请求
由Spider生成,由Downloader执行
.url请求的URL地址
.method请求的方法
.headers请求头
.body请求主体,字符串类型
.meta传递消息用
.copy()复制该请求
Response随想表示一个HTTP响应
由downloader生成,由spider处理
.url 对应的URL地址
.status状态码
.headers头部信息
.body内容信息,字符串类型
.flags一组标记
.request产生Response类型对应的Request对象
.copy()复制该响应
Item对象表示一个从HTML页面中提取的信息内容
由Spider生成,由Item Pipeline处理
Item类似字典类型,可以按照字典类型操作
信息提取方法:BeautifulSoup、lxml、re、Xpath Selector、CSS Selector