Scrapy爬虫框架——慕课嵩天老师课程学习笔记

框架理解

框架结构: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 [options][args]

startproject创建工程 scrapy startproject [dir]

genspider创建爬虫 scrapy genspider [options]

settings获得爬虫配置信息 scrapy settings [options]

crawl运行爬虫 scrapy crawl

list列出工程所有爬虫 scrapy list

shell启动URL调试命令行 scrapy shell [url]

目录结构

运行scrapy startproject demo时

demo/   工程文件夹

---scrapy.cfg    部署服务器上时爬虫配置文件

---demo/        自定义代码文件夹

    ---__init__.py   初始化脚本

    ---items.py     Items代码模板(继承类)

    ---middlewares.py     Middlewares代码模板(继承类)

    ---piplines.py      Piplines代码模板(继承类)

    ---setting.py        Scrapy爬虫的配置文件

    ---spiders/          Spiders代码模板目录(继承类)

cd demo运行scrapy genspider demo python123.io

意思是产生一个爬虫,爬虫名字是demo,爬取域名是https://python123.io

会在demo/demo/spiders/文件夹里生产一个demo.py文件

使用步骤

四步:创建工程和spider模板,编写Item Pipeline,编写Spider,优化配置策略

数据类型:Request类、Response类、Item类

Request类(class scrapy.http.Request())

Request对象表示一个HTTP请求

由Spider生成,由Downloader执行

.url请求的URL地址

.method请求的方法

.headers请求头

.body请求主体,字符串类型

.meta传递消息用

.copy()复制该请求

Reponse类(class scrapy.http.Response())

Response随想表示一个HTTP响应

由downloader生成,由spider处理

.url 对应的URL地址

.status状态码

.headers头部信息

.body内容信息,字符串类型

.flags一组标记

.request产生Response类型对应的Request对象

.copy()复制该响应

Item类(class scrapy.item.Item())

Item对象表示一个从HTML页面中提取的信息内容

由Spider生成,由Item Pipeline处理

Item类似字典类型,可以按照字典类型操作

信息提取方法:BeautifulSoup、lxml、re、Xpath Selector、CSS Selector

你可能感兴趣的:(python)