scrapy框架

scrapy的架构介绍:

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

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

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

Downloader:下载器, 下载网页内容返回给爬虫(spiders)。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

=================================================
1.创建一个新的Scrapy项目。
创建项目
scrapy startproject 爬虫项目名称

制作爬虫
scrapy genspider 爬虫文件名称
域名:制作爬虫开始爬取网页

明确目标
编写[items.py]:明确你想要抓取的目标

简单案例介绍

class JobboleItem(scrapy.Item):

# define the fields for your item here like:
#标题
title = scrapy.Field()
#创建时间
create_date = scrapy.Field()
#文章地址
url = scrapy.Field()
#id
url_object_id = scrapy.Field()
#文章图片
front_image_url = scrapy.Field()

2.到创建的爬虫文件里面(提取目标数据和url,以及域名)

# 爬虫文件
class ChianzSpider(scrapy.Spider):
# 爬虫文件名称
    name = 'chianz'
# allowed_domains:设置域(可以指定多个)
    allowed_domains = ['chinaz.com']
    #设置起始url(可指定多个)
    start_urls = ['http://top.chinaz.com/hangyemap.html']
    ......

4.再到setting.py里面配置文件(设置请求头,下载延时,是否遵守robot协议,激活管道文件)

默认为True,需要我们手动改为False

ROBOTSTXT_OBEY = False

默认请求头

DEFAULT_REQUEST_HEADERS = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',
}

在这里进行管道文件的激活,管道文件后面跟的数字,表示优先级,数字越小,优先级越高

ITEM_PIPELINES = {
'chinaz.pipelines.ChinazPipeline': 300,
}

两种类型根据需求选择
1.mongodb数据库相关配置
MONGO_HOST = '127.0.0.1'
MONGO_POST = '27017'
MONGO_DB = 'class1811'

2.关于mysql的一些配置信息
MYSQL_HOST = 'localhost'
MYSQL_USER = 'root'
MYSQL_PWD = '123456'
MYSQL_DB = '1811'
MYSQL_CHARSET = 'utf8'

5.pipelines.py:数据管道(在这里做数据的过滤和持久化)

scrapy主要有如下几个核心文件:

items.py: 在项目的根目录 作用:定义需要获取出来的字段名称
middlewares.py: 在项目的根目录作用:爬虫中间件和下载中间件
pipelines.py: 在项目的根目录作用:管道文件,保存数据
spiders文件夹: 作用:爬虫文件,提取url和数据
settings.py: 在项目的根目录作用:设置文件,配置信息

你可能感兴趣的:(scrapy框架)