Scrapy基础详解

简介: Scrapy基础详解

Scrapy框架


什么是scrapy框架

Scrapy 是一个为了抓取网页数据、提取结构性数据而编写的应用框架,该框架是封装的,包含 request (异步调度和处理)、下载器(多线程的 Downloader)、解析器(selector)和 twisted(异步处理)等。对于网站的内容爬取,其速度非常快捷。


安装

pip install scrapy


创建一个工程(终端):


# 在终端运行如下命令
# 第一步 创建项目
  scrapy startproject xxx    # xxx是项目的名称
# 第二步 进入项目
  cd xxx 
# 第三步 创建爬虫文件 
scrapy genspider spiderName www.xxxxx.com   # 网址为你要爬取的网站刚开始也可以随意写,后面可以在项目中改


创建项目完成后的文件目录结构


e834a1b5d00044ccbff64441cf00c452.png


各文件的作用(根据我自己的项目)


scrapy.cfg: 项目的配置文件,一般不需要更改。

scrapy文件夹 存放爬虫代码

wangyi.py: 爬虫代码,初步处理数据

items.py: 定义爬取的数据类,

middlewares.py 中间件文件,自定义

pipelines.py: 管道文件 接受item.py中的数据 当我们的items被返回的时候,会自动调用我们的pipelines类中process_item()(需要加到settings.py里面)

settings.py: 项目的设置文件。设置伪装方式,ip代理

piders/: 放置spider代码的目录。


执行工程:

- scrapy crawl spiderName # 运行项目


scrapy持久化存储:


基于管道:

编码流程:

数据解析

在item中定义相关属性

将解析的数据封装储存到list类型的对象

将item类型的对象提交给管道进行持久化存储的操作

在管道类的process_item中要将其接受到的item对象中存储的数据进行持久化存储操作

在配置文件中开启管道

好处:

通用性强

面试题

将爬取到的数据一份存储到本地,一份存储到数据库,如何实现

管道文件中一个管道类对应的是将数据储存到一个平台

爬虫文件提交的item只会给管道文件中第一个被执行的管道类接受

process_item中的return item 表示将item传递给下一个即将被执行的管道类


scrapy五大核心组件:


引擎

用来处理整个数据流处理,触发事务(框架的核心)


调度器

用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回,可以想象成一个URL(抓取网页的地址或者说是链接)

的优先队列,由它类决定下一个抓取的网址是什么,可以去除重复的网址


下载器:

用于下载网页端的内容,并将网页的内容返回给蜘蛛(Scrapy 下载器是建立在twisted这个高效的异步模型)


爬虫

爬虫主要用来干活,用于从特定的网页中提取自己需要的内容,即所谓的实体item,用户也可以从中提取出链接让Scrapy继续爬取下一个页面


项目管道

负责处理爬虫从网页中抽取到的实体,主要的功能是持久化实体,验证实体的有效性,清楚不需要的信息,当当页面被爬虫解析后

将被发送到项目管道,并经过几个特定的次序处理数据


相关文章
|
11月前
|
数据采集 存储 中间件
scrapy简单入门
scrapy简单入门
53 0
|
18天前
|
数据采集 中间件 数据挖掘
Scrapy 爬虫框架(一)
Scrapy 爬虫框架(一)
35 0
|
18天前
|
数据采集 XML 前端开发
Scrapy 爬虫框架(二)
Scrapy 爬虫框架(二)
37 0
|
2月前
|
存储 数据采集 中间件
scrapy实战2586个小姐姐带回家
scrapy实战2586个小姐姐带回家
43 3
scrapy实战2586个小姐姐带回家
|
2月前
|
数据采集 中间件 调度
Scrapy 爬虫框架的基本使用
Scrapy 爬虫框架的基本使用
|
4月前
|
数据采集 中间件 数据处理
scrapy的入门和使用
scrapy的入门和使用
|
5月前
|
数据采集 存储 数据可视化
介绍一下常见的爬虫框架或库,如`Scrapy`。
【2月更文挑战第22天】【2月更文挑战第70篇】介绍一下常见的爬虫框架或库,如`Scrapy`。
85 0
|
12月前
|
数据采集 Web App开发 中间件
Scrapy爬虫框架
Scrapy爬虫框架
117 1
Scrapy爬虫框架
|
5月前
|
数据采集 Python
scrapy框架
scrapy框架
42 0
|
数据采集 Linux Python
Scrapy 框架学习
Scrapy 框架学习
38 0
Scrapy 框架学习