美文网首页
scrapy知识点回顾

scrapy知识点回顾

作者: 指向远方的灯塔 | 来源:发表于2019-04-04 15:49 被阅读0次

万能仓库: https://www.lfd.uci.edu/~gohlke/pythonlibs/
pywin32: https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有:Twisted,lxml,pywin32。在安装之前,确保这些基本库已经安装好。scrapy是一个基于Twisted的异步处理框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。其内部集成多进程,多线程,去重队列等基础功能。

安装scrapy

pip install scrapy

1.架构介绍
scrapy框架的架构1 scrapy框架的架构2

engine 引擎,处理整个系统的数据流处理,触发事务,是整个框架的核心。

Item 项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该item对象。

Scheduler 调度器,接受引擎发过来的请求并将其加入队列中,在引擎再次请求的时候将请求提供给引擎。

Downloader 下载器,下载网页内容,并将网页内容返回给蜘蛛。

Spiders 蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。

Item Pipeline 项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗,验证和存储数据

Downloader Middlewares 下载器中间件,位于引擎和下载器之间的钩子框架,主要处理引擎与下载器之间的请求及响应

Spider Middlewares 蜘蛛中间件 , 位于引擎和蜘蛛之间的钩子框架,主要处理向蜘蛛输入的响应和输出的结果及新的请求。

2.数据流

Scrapy中的数据流由引擎控制,数据流的过程如下:
首先蜘蛛发送请求到引擎,引擎将请求发送给调度器,调度器将请求添加到队列中,当引擎再次请求的时候,将请求提供给引擎,引擎将请求通过下载器中间件发送给下载器,下载器下载网页内容,并将网页内容通过引擎返回到蜘蛛,蜘蛛对网页内容进行解析,将数据发送给管道并发送新的请求到引擎,管道对获得的数据进行清洗,验证和存储。周而复始。

3.项目结构

(1)创建工程
scrapy startproject 工程名字
(2)认识目录结构

        qiubaipro               工程总目录
            qiubaipro           工程核心目录
                __pycache__     python的缓存文件
                spiders         爬虫核心目录
                    __pycache__
                    __init__.py
                    lala.py     爬虫文件(*)
                __init__.py     包的标记
                items.py        定义数据结构的地方(*)
                middlewares.py  各种中间件放的地方
                pipelines.py    管道文件(*)
                settings.py     工程配置文件(*)
            scrapy.cfg          部署工程的配置文件(一般不用)
(3)生成爬虫文件
    scrapy genspier 爬虫名字 爬取域名
    生成参数的意思去看爬虫文件里面的注释即可
(4)启动爬虫
    cd qiubaipro/qiubaipro/spiders
    来到settings配置文件中,将遵从robots协议注释掉,定制自己的UA,或者定制自己的请求头部
    scrapy crawl 爬虫名字
    response是一个对象
    response.url           请求的url
    response.status        状态码
    response.headers       响应头
    response.text          响应的字符串格式内容
    response.body          响应的字节格式内容
    response.xpath()       方法用来提取数据
    scrapy已经为你集成好了xpath和选择器方法,直接使用即可,和以前的略有不同,以前无论获取文本还是属性得到的都是字符串格式内容,现在得到的是selector对象,要通过extract()进行提取你的字符串格式内容
(5)输出格式
    scrapy crawl qiubai -o qiubai.json
    scrapy crawl qiubai -o qiubai.xml
    scrapy crawl qiubai -o qiubai.csv
4.scrapy shell

scrapy shell是什么?是scrapy的一个终端调试工具。提取数据,就要写xpath。在这里可以调试xpath,如果这里写对了,到代码中肯定对
如何使用
pip install ipython
scrapy shell url
一般情况在终端任意界面就可以输入这个指令
特殊情况,需要新建工程,配置好,保证没有语法错误,在工程目录下进入cmd,通过scrapy shell调试这个页面
response.xpath() 返回是列表,列表里面都是selector对象
ret.extract()[0] === ret[0].extract() == ret.extract_first()
如果ret是空列表,前面两个会报错,而extract_first()会获取得到None
response.css() 就是以前的soup.select()
scrapy自己封装的这种写法,以前的bs没有这种写法
获取内容:response.css('.articleGender::text')
获取属性:response.css('.author > a::attr(href)')
item如何使用
和字典用法一样,还可以快速的转化为字典
d = dict(baby)

5.yield item和请求

yield item
yield scrapy.Request(url=url, callback=self.parse)
yield scrapy.FormRequest(url=post_url, formdata=formdata, callback=self.parse_post)
文件方式启动scrapy
from scrapy import cmdline
cmdline.execute(['scrapy', 'crawl', 'qiubai'])

6.日志信息和错误等级

错误等级有5个级别,从高到低依次为
CRITICAL 严重错误
ERROR 一般错误
WARNING 警告
INFO 普通信息
DEBUG 调试信息
发现bug需要3s钟,解决bug需要3个小时,debug却需要一辈子
默认的级别是 DEBUG

相关文章

网友评论

      本文标题:scrapy知识点回顾

      本文链接:https://www.haomeiwen.com/subject/ojcfiqtx.html