Scrapy 基础(1)

Python开源抓取框架简单介绍,以及安装(ubuntu)常见题目解决
发布时间:2012-10-09 发布来源:

       这场“血雨腥风”的3SB大战赶紧安适沉着荒僻冷僻下来,还给用户一个稳定均衡的搜刮市场。不过这场战斗总不克不及有始无终吧,小编很是3SB竞技赛能其实为用户带来点儿本质性的益处,那些参战或没参战的搜刮公司多想想怎么进步本身的产品创新力,在顾忌公司受益的同时也多为我们老公民供给优质的搜刮体验。

像橡树般一寸寸成长起来的友情,要比像瓜蔓般忽然蹿起来的友情更为靠得住。 项目组内容转自:http://www.kuqin.com/system-analysis/20110906/264417.html

人生的意义就在这个过程上。你要细细体味这过程中的每节,无论它是一节黄金或一节铁;你要熟悉每节的充沛价值。 一、概述

下图显示了Scrapy的大体架构,此中包含了它的首要组件及体系的数据处理惩罚流程(绿色箭头所示)。下面就来一个个申明每个组件的感化及数据的处理惩罚过程。


二、组件

1、Scrapy Engine(Scrapy引擎)

Scrapy引擎是用来把握全部体系的数据处理惩罚流程,并进行事务处理惩罚的触发。更多的具体内容可以看下面的数据处理惩罚流程。

2、Scheduler(调剂)

调剂法度从Scrapy引擎接管恳求并排序列入队列,并在Scrapy引擎发出恳求后返还给他们。

3、Downloader(器)

器的首要职责是抓取网页并将网页内容返还给蜘蛛( Spiders)。

4、Spiders(蜘蛛)

蜘蛛是有Scrapy用户本身定义用来解析网页并抓取制订URL返回的内容的类,每个蜘蛛都能处理惩罚一个域名或一组域名。换句话说就是用来定义特定网站的抓取和解析规矩。

蜘蛛的全部抓取流程(周期)是如许的:

    起首获取第一个URL的初始恳求,当恳求返回后调取一个回调函数。第一个恳求是经由过程调用start_requests()办法。该办法默认从start_urls中的Url中生成恳求,并履行解析来调用回调函数。
    在回调函数中,你可以解析网页响应并返回项目对象和恳求对象或两者的迭代。这些恳求也将包含一个回调,然后被Scrapy,然后有指定的回调剂理惩罚。
    在回调函数中,你解析网站的内容,同程应用的是Xpath选择器(然则你也可以应用BeautifuSoup, lxml或其他任何你喜好的法度),并生成解析的数据项。
    最后,从蜘蛛返回的项目凡是会进驻到项目管道。

5、Item Pipeline(项目管道)

项目管道的首要义务是负责处理惩罚有蜘蛛从网页中抽取的项目,他的首要任务是清楚、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理惩罚数据。每个项目管道的组件都是有一个简单的办法构成的Python类。他们获取了项目并履行他们的办法,同时他们还须要断定的是是否须要在项目管道中持续履行下一步或是直接丢弃掉不处理惩罚。

项目管道凡是履行的过程有:

    清洗HTML数据
    验证解析到的数据(搜检项目是否包含须要的字段)
    搜检是否是反复数据(若是反复就删除)
    将解析到的数据存储到数据库中

6、Downloader middlewares(器中心件)

中心件是位于Scrapy引擎和器之间的钩子框架,主如果处理惩罚Scrapy引擎与器之间的恳求及响应。它供给了一个自定义的代码的体式格式来拓展Scrapy的功能。中心器是一个处理惩罚恳乞降响应的钩子框架。他是轻量级的,对Scrapy尽享全局把握的底层的体系。

7、Spider middlewares(蜘蛛中心件)

蜘蛛中心件是介于Scrapy引擎和蜘蛛之间的钩子框架,首要工作是处理惩罚蜘蛛的响应输入和恳求输出。它供给一个自定义代码的体式格式来拓展Scrapy的功能。蛛中心件是一个挂接到Scrapy的蜘蛛处理惩罚机制的框架,你可以插入自定义的代码来处理惩罚发送给蜘蛛的恳乞降返回蜘蛛获取的响应内容和项目。

8、Scheduler middlewares(调剂中心件)

调剂中心件是介于Scrapy引擎和调剂之间的中心件,首要工作是处从Scrapy引擎发送到调剂的恳乞降响应。他供给了一个自定义的代码来拓展Scrapy的功能。

三、数据处理惩罚流程

Scrapy的全部数据处理惩罚流程有Scrapy引擎进行把握,其首要的运行体式格式为:

    引擎打开一个域名,时蜘蛛处理惩罚这个域名,并让蜘蛛获取第一个爬取的URL。
    引擎从蜘蛛那获取第一个须要爬取的URL,然后作为恳求在调剂中进行调剂。
    引擎从调剂那获取接下来进行爬取的页面。
    调剂将下一个爬取的URL返回给引擎,引擎将他们经由过程中心件发送到器。
    当网页被器完成今后,响应内容经由过程中心件被发送到引擎。
    引擎收到器的响应并将它经由过程蜘蛛中心件发送到蜘蛛进行处理惩罚。
    蜘蛛处理惩罚响应并返回爬取到的项目,然后给引擎发送新的恳求。
    引擎将抓取到的项目项目管道,并向调剂发送恳求。
    体系反复第二部后面的操纵,直到调剂中没有恳求,然后断开引擎与域之间的接洽。

四、驱动器

Scrapy是由Twisted写的一个受迎接的Python事务驱动收集框架,它应用的长短堵塞的异步处理惩罚。若是要获得更多关于异步编程和Twisted的信息,请参考下面两条链接。

五、安装失足以及解决办法:


NOTE: Trying to build without Cython, pre-generated ""src/lxml/lxml.etree.c"" needs to be available.
ERROR: /bin/sh: xslt-config: not found

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
src/lxml/lxml.etree.c:4: fatal error: Python.h: 没有那个文件或目次
compilation terminated.
error: Setup script exited with error: command ""gcc"" failed with exit status 1

解决办法:

sudo apt-get install gcc
sudo apt-get install python-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libxslt1.1 libxslt1-dev


再次运行安装号令即可:

sudo easy_install -U -Scrapy
sudo pip install Scrapy


六、参考材料:

1、官方网站文档:http://scrapy.org/doc/

2、代码参考示例:http://snipplr.com/all/tags/scrapy/夏洛蒂·勃朗特

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