美文网首页网络爬虫框架——scrapy
1.python爬虫——开源项目scrapy

1.python爬虫——开源项目scrapy

作者: abeb6ca9bb86 | 来源:发表于2017-02-19 23:06 被阅读721次

    PySpider

    PySpider详细介绍

    PySipder是一个Python爬虫程序

    演示地址:http://demo.pyspider.org/

    l使用Python编写脚本,提供强大的API

    lPython 2&3

    l强大的WebUI和脚本编辑器、任务监控和项目管理和结果查看

    l支持JavaScript页面

    l后端系统支持:MySQL,MongoDB, SQLite, Postgresql

    l支持任务优先级、重试、定期抓取等

    l分布式架构

    下载地址:https://github.com/binux/pyspider

    Scrapy

    Scrapy是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片

    下载链接:

    https://github.com/scrapy/scrapy

    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

    所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。抓取网页的一般方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。

    Scrapy使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。

    l引擎(Scrapy

    Engine),用来处理整个系统的数据流处理,触发事务。

    l调度器(Scheduler),用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。

    l下载器(Downloader),用于下载网页内容,并将网页内容返回给蜘蛛。

    l蜘蛛(Spiders),蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。每个spider负责处理一个特定(或一些)网站。

    l项目管道(Item

    Pipeline),负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

    l下载器中间件(Downloader

    Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

    l蜘蛛中间件(Spider

    Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。

    l调度中间件(Scheduler

    Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

    爬取流程

    上图绿线是数据流向,首先从初始URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spider进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回Scheduler;另一种是需要保存的数据,它们则被送到Item Pipeline那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。

    数据流

    Scrapy中的数据流由执行引擎控制,其过程如下:

    引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。

    引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。

    引擎向调度器请求下一个要爬取的URL。

    调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。

    一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。

    引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。

    Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。

    引擎将(Spider返回的)爬取到的Item给Item

    Pipeline,将(Spider返回的)Request给调度器。(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

    官方教程

    http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html

    安装

    最快方式是如下命令:

    pipinstall scrapy

    当然前提需要时有PIP命令了。

    Portia

    Portia是scrapyhub开源的一款可视化的爬虫规则编写工具。它提供可视化的Web页面,你只需要通过点击标注页面上你需要抽取的数据,不需要任何编程知识即可完成规则的开发。

    这些规则可以在#Scrapy#中使用,用于抓取页面。

    https://github.com/scrapinghub/portia

    感谢打赏~~

    相关文章

      网友评论

        本文标题:1.python爬虫——开源项目scrapy

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