美文网首页
Scrapy crawspider和Scrapy_Redis分布

Scrapy crawspider和Scrapy_Redis分布

作者: Crld | 来源:发表于2018-12-08 16:49 被阅读0次

    Scrapy框架的简单使用

    创建项目:scrapy startproject xxx

    进入项目:cd xxx #进入某个文件夹下

    创建爬虫:scrapy genspider xxx(爬虫名) xxx.com (爬取域)

    生成文件:scrapy crawl xxx -o xxx.json (生成某种类型的文件)

    运行爬虫:scrapy crawl XXX

    列出所有爬虫:scrapy list

    Scrapy框架的整体架构和组成

    图中绿色的是数据的流向

    我们看到图里有这么几个东西,分别是

    Spiders:爬虫,定义了爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求

    Engine:引擎,处理整个系统的数据流处理,出发事物,框架的核心。

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

    Downloader:下载器,下载网页内容,并将下载内容返回给spider

    ItemPipeline:项目管道,负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据

    Downloader Middlewares:下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块

    Spider Middlewares:spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求middlewares.py里实现

    1.spider的yeild将request发送给engine

    2.engine对request不做任何处理发送给scheduler

    3.scheduler,生成request交给engine

    4.engine拿到request,通过middleware发送给downloader

    5.downloader在\获取到response之后,又经过middleware发送给engine

    6.engine获取到response之后,返回给spider,spider的parse()方法对获取到的response进行处理,解析出items或者requests

    7.将解析出来的items或者requests发送给engine

    8.engine获取到items或者requests,将items发送给ItemPipeline,将requests发送给scheduler(ps,只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求)

    CrawlSpider是一个类,父类是scrapy.Spider。

    CrawlSpider不仅有Spider的功能,还有自己独特功能

    特有功能:CrawlSpider可以定义规则,解析html时可根据链接规则

    提取出指定链接,然后再向这些链接发送请求。

    通常用于:如果有需要跟进链接的需求,爬取网页之后,需要提取链接再次爬取。

      如何提取链接?

    链接提取器,在这里就可以写规则提取指定链接

    scrapy.linkextractors.LinkExtractor(

        allow = (),    # 正则表达式  提取符合正则的链接

        deny = (),     # (不用)正则表达式  不提取符合正则的链接

      allow_domains = (),  # (不用)允许的域名

        deny_domains = (),   # (不用)不允许的域名

        restrict_xpaths = (), # xpath,提取符合xpath规则的链接

        retrict_css = ()  # 提取符合选择器规则的链接)

    相关文章

      网友评论

          本文标题:Scrapy crawspider和Scrapy_Redis分布

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