- 浏览: 153558 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
lyaqys:
lz实现的OptimisticExclusiveLock有点问 ...
java park/unpark 【java并发】基于JUC CAS原理,自己实现简单独占锁
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/夏洛蒂·勃朗特
发布时间: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 安装 pip beautifulsoup4
2013-10-25 17:50 1250pip 安装: yum install python-setu ... -
简单的linux -c http-client
2013-10-23 15:35 4726#include<stdio.h> #includ ... -
linux进程cpu资源分配命令nice,renice,taskset
2013-09-04 14:03 1163nice,renice 指定进程运行的优先级 taskset ... -
探索 Pexpect,第 2 部分:Pexpect 的实例分析
2013-08-19 11:08 1719原文: http://www.ibm.com/develope ... -
c 专家编程
2013-08-13 17:06 690总结: -2> int * a = NUL ... -
Linux中线程与CPU核的绑定
2013-08-09 15:15 2128最近在对项目进行性能 ... -
建议编译的时候加警告 atof
2013-08-07 20:46 711#include <stdlib.h> ... -
feodra 17 安装 chrome
2013-08-04 01:35 7681: 下载:http://www.google.cn/chro ... -
Sudo提权出现:xx用户不在 sudoers 文件中
2013-08-03 20:22 913Sudo提权出现:xx用户不在 sudoers 文件中 症状 ... -
select,epoll,poll比较
2013-07-28 17:13 684select,poll,epoll简介 se ... -
gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数
2013-07-22 22:45 902我们用gcc编译程序时,可能会用到“-I”(大写i),“-L” ... -
Linux下如何将进程绑定在特定的CPU上运行
2013-07-22 10:52 990Linux下如何将进程绑定在特定的CPU上运行? 以root用 ... -
linux运维常用命令
2013-07-13 20:40 886推荐一个实用命令:awk '{x+=$2} END {prin ... -
linux 进程通信方式
2013-07-07 20:46 621# 管道( pipe ):管道是一种半双工的通信方式,数据只能 ... -
判断两个一个链表是否存在循环(C专家编程中的问题)
2013-06-24 15:35 914判断两个一个链表是否存在循环(C专家编程中的问题) #incl ... -
atoi源码
2013-05-14 19:32 1262原文: http://blog.csdn.net/eroswa ... -
为重负网络优化 Nginx 和 Node.js
2013-05-13 01:12 1005原文:http://linux.cn/forum.php?mo ... -
c语言特殊字符串复制
2013-05-06 01:59 8642.strcpy和memcpy主要有以下3方面的区别。 2.1 ... -
《APUE》:线程和fork(父子进程锁)
2013-04-29 21:07 1169《Unix环境高级编程》这本书附带了许多短小精美的小程序,我在 ... -
CentOS升级Python到2.7版本
2013-04-23 15:24 944[root@localhost ~] python -V ...
相关推荐
本基础教程将引导你逐步了解如何使用Scrapy来爬取百度知道页面的信息。 一、Scrapy简介 Scrapy是用Python编写的,开源且跨平台的Web爬虫框架。它提供了一个高级的结构,使开发者能够快速地编写出稳定且可扩展的爬虫...
python scrapy 爬虫基础 分布式爬虫 scrapy python scrapy 爬虫基础 分布式爬虫 scrapy
在这个"scrapy基础知识"中,我们将深入理解Scrapy的核心概念、架构以及如何创建一个基本的Scrapy项目。 首先,Scrapy由多个组件构成,主要包括Spiders、Item、Item Pipeline、Request/Response、Selectors等。让...
1. **Spiders**:爬虫是Scrapy的核心,它们定义了如何从一个或多个网站提取数据。Spider可以定义规则来遵循网站的链接,同时处理抓取到的数据。 2. **Item**:Item是Scrapy中的数据容器,用于定义你想要抓取的数据...
Scrapy基础(讲解详细、包括框架流程代码实战,最佳学习资料).zip
Scrapy 0.24是其早期的一个版本,虽然现在已经有更新的版本发布,但这个版本仍然具有重要的学习价值,特别是对于初学者来说,它的基础结构和核心概念相对简单易懂。 Scrapy框架的核心组件包括: 1. **Spiders**:...
1、创建Scrapy项目:scrapy startproject baidu_scraper 2、定义Item: class BaiduResultItem(scrapy.Item): seq = scrapy.Field() title = scrapy.Field() 3、编写Spider:baidu_spider.py 4、运行Spider: cd...
1. **学习曲线**:Scrapy提供了完整的框架,适合构建大型、复杂的爬虫项目,但学习成本相对较高;而Request更简单易用,适合快速搭建小型爬虫,但扩展性不如Scrapy。 2. **功能完整性**:Scrapy内置了很多功能,如...
#### 二、Scrapy基础概念详解 - **命令行工具**:深入讲解Scrapy提供的各种命令行工具,如启动项目、运行爬虫、调试等功能。 - **爬虫(Spiders)**:详细介绍如何编写爬虫类来定义抓取规则,包括如何处理响应、解析...
我们简单介绍一下各个主要文件的作用: scrapy.cfg --配置文件,用于存储项目的配置信息。 mySpider/ --项目的Python模块,将会从这里引用代码。 mySpider/items.py --实体文件,用于定义项目的目标实体。 mySpider/...
通过阅读Scrapy 1.4版本的官方文档,我们可以了解到Scrapy的大量知识点,这包括基础概念、内置服务、解决特定问题的方法、Scrapy的扩展以及Scrapy的架构等。 基础概念部分涵盖了Scrapy的核心组件,例如爬虫...
《Python爬虫框架Scrapy教程》主要是针对学习python爬虫的课程,又基础的python爬虫框架scrapy开始,一步步学习到最后完整的爬虫完成,现在python爬虫应用的非常广泛,本文档详细介绍了scrapy爬虫和其他爬虫技术的...
这将创建一个名为"my_first_project"的基础Scrapy项目结构。 - 进入项目目录:`cd my_first_project`。 - 创建一个新的爬虫:`scrapy genspider example example.com`。这将创建一个名为"example"的爬虫,用于抓取...
1. **Twisted**:Scrapy基于Twisted异步网络库构建,它是一个用Python编写的事件驱动的网络编程框架,支持TCP/IP、UDP、SSL/TLS等协议,并提供了多种网络应用组件。在Scrapy中,Twisted负责处理网络请求和响应,使得...
首先,让我们了解Scrapy的基础架构。Scrapy基于Twisted异步网络库,使其能够高效地处理多个并发请求。它由多个组件构成,包括Spider、Item、Item Pipeline、Request/Response、Downloader Middleware和Scheduler。...
1. **Python 3.6.3**:这是项目的基础运行环境。 2. **Eclipse IDE**:用于代码编辑和管理。 3. **PyDev**:Eclipse的Python开发插件,提供Python集成开发环境(IDE)功能。 #### 三、具体步骤 ##### 1. 安装Python ...
1. **通过pip安装**:这是最简单的方式,只需运行`pip install scrapy`即可。 2. **从源码编译**:对于需要定制安装选项的用户,可以从GitHub下载源代码并进行编译安装。 ##### Scrapy教程 官方提供了详尽的新手...