美文网首页
纯python scrapy爬虫框架

纯python scrapy爬虫框架

作者: 初见_ac87 | 来源:发表于2018-11-01 20:37 被阅读0次

    要想使用scrapy框架,首先要理解运行的原理

    Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等

    Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

    Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

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

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

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

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

    爬虫分为普通爬虫和通用爬虫

    普通爬虫的使用

    1.新建项目

    ···scrapy startproject myspider```

    2.创建爬虫文件

    ···scrapy genspider name yuming.com···
    打开文件之后对setting进行设置

    (1)ROBOTSTXT_OBEY = False
    (2)COOKIES_ENABLED = False
    (3)在默认请求头里面进行user_agent等一系列的设置
    (4)打开管道的借口
    (5)DOWNLOAD_DELAY = 3 设置下载延时
    3.####我们要找到目标url
    例如爬取一个网站https://www.baidu.com/
    (1)进入页面找到目标url
    https://www.baidu.com/?page=1
    (2)为了爬取所有页面,需要爬取当前页面所有的分页url yield给调度器
    yield scrapy.Ruquest(url='分页url',)
    (2)在item.py里面编辑需要爬取的字段名称
    (3)进入爬虫文件,在解析函数下进行内容的爬取
    (4)把爬取到的数据yield item交给管道
    (5)在pip文件里进行数据持久化的存储

    通用爬虫

    适合爬取一些分页有规律的网站与普通爬虫大体相同
    (1)通用爬虫创建项目:
    ···scrapy genspider -t crawl 爬虫文件 域名···
    (2)创建规则
    ···rules = (
    Rule(LinkExtractor(allow=r'.*?p=\d+',restrict_xpaths=('//div[@class="pages"]')), callback='parse_item', follow=True,),
    )···
    (3)与普通爬虫解析的差别
    需要重写···def parse_start_url(self, response):
    []···
    (4)不能重写parse方法,这是系统内部的需求。

    相关文章

      网友评论

          本文标题:纯python scrapy爬虫框架

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