百度
360搜索
搜狗搜索

scrapy框架教程,如何在ubuntu中安装scrapy详细介绍

本文目录一览: python如何安装Scrapy框架

想要在python怎样安装Scrapy框架吗?你们可以跟随着小编一起去下文中看看python安装Scrapy框架的详细操作流程,感兴趣的伙伴们赶紧去下文看看吧!首先安装python安装完成后,配置一下环境变量。还要安装一些组件pywin32,pywin32安装完成还要安转pip,解压通过cmd命令进行安装查看一下pip是否安装成功执行pipinstallScrapy进行安装Scrapypython|

Mac OS X安装 Scrapy

环境:Mac OS X Yosemite 10.11.4

安装Scrapy

学习Python爬虫必须要使用的框架Scrapy,以下是安装教程 以及可能遇到的问题和解决办法.

打开终端执行以下命令:
sudo easy_install pip pip 和 easy_install 都是 Python 的框架管理命令,pip 是对 easy_install的升级。 安装成功后接着执行以下命令:
sudo pip install Scrapy

如果执行成功,那么 Scrapy 就安装成功了

但往往事与愿违,你很有可能遇到如下错误:OSError: [Errno 1] Operation not permitted ,就是各种root都不可以,google之后才发现这和新系统有个叫sip的机制有关.

由于El Capitan引入了SIP机制(System Integrity Protection), 默认下系统启用SIP系统完整性保护机制,无论是对于硬盘还是运行时的进程限制对系统目录的写操作。 这就是这个OSError: [Errno 1] Operation not permitted 错误的原因,解决办法就是取消SIP机制,具体做法是: 重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式),左上角菜单里找到实用工具 -> 终端输入csrutil disable回车重启Mac即可 如果想重新启动SIP机制重复上述步骤改用csrutil enable即可 我们现在再看看sip的状态, $ csrutil status System Integrity Protection status: disabled. 这样再安装时再也不会提示无法写入的权限提示了

如果在mac下碰到OSError: [Errno 1] Operation not permitted:的问题,就算用sudo 也无法解决,那肯定是sip在作怪了.

权限的问题解决好后,你也有可能遇见这种错误:

解决方法有如下几种:你可以使用任意一种

1、终端执行命令安装或更新命令行开发工具:
xcode-select --install

2、配置路径:C_INCLUDE_PATH
C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2/libxml:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include

3、参照官网使用如下命令安装Scrapy
STATIC_DEPS=true pip install lxml

一般此三个方法就可解决错误成功安装Scrapy

如果安装成功了 但是在python下执行import scrapy报下面的错误
Traceback (most recent call last): File "

", line 1, in

File "/Library/Python/2.7/site-packages/scrapy/ init .py", line 48, in

from scrapy.spiders import Spider File "/Library/Python/2.7/site-packages/scrapy/spiders/ init .py", line 10, in

from scrapy.http import Request File "/Library/Python/2.7/site-packages/scrapy/http/ init .py", line 12, in

from scrapy.http.request.rpc import XmlRpcRequest File "/Library/Python/2.7/site-packages/scrapy/http/request/rpc.py", line 7, in

from six.moves import xmlrpc_client as xmlrpclib ImportError: cannot import name xmlrpc_client



虽然我也不知道具体原因但已经在stackoverflow上找到解决办法: 在命令行终端依次执行下列命令即可:
sudo rm -rf /Library/Python/2.7/site-packages/six
sudo rm -rf/System/Library/Frameworks/Python.framework/Versions/2.7/Extras /lib/python/six
sudo pip install six
如何在ubuntu中安装scrapy

这是一款提取网站数据的开源工具。Scrapy框架用Python开发而成,它使抓取工作又快又简单,且可扩展。我们已经在virtual box中创建一台虚拟机(VM)并且在上面安装了Ubuntu 14.04 LTS。
安装 Scrapy
Scrapy依赖于Python、开发库和pip。Python最新的版本已经在Ubuntu上预装了。因此我们在安装Scrapy之前只需安装pip和python开发库就可以了。
pip是作为python包索引器easy_install的替代品,用于安装和管理Python包。pip包的安装可见图 1。
sudo apt-get install python-pip
图:1 pip安装
我们必须要用下面的命令安装python开发库。如果包没有安装那么就会在安装scrapy框架的时候报关于python.h头文件的错误。
sudo apt-get install python-dev
图:2 Python 开发库
scrapy框架既可从deb包安装也可以从源码安装。在图3中我们用pip(Python 包管理器)安装了deb包了。
sudo pip install scrapy
图:3 Scrapy 安装
图4中scrapy的成功安装需要一些时间。
图:4 成功安装Scrapy框架
使用scrapy框架提取数据
关于Linux命令的介绍,看看《linux就该这么学》,具体关于这一章地址3w(dot)linuxprobe/chapter-02(dot)html
基础教程
我们将用scrapy从fatwallet.com上提取商店名称(卖卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。
$sudo scrapy startproject store_name
图:5 Scrapy框架新建项目
上面的命令在当前路径创建了一个“store_name”的目录。项目主目录下包含的文件/文件夹见图6。
$sudo ls –lR store_name
Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 官网网站http://www.scrapy.org/
1、安装如下软件
sudo apt-get install build-essential;
sudo apt-get install python-dev;
sudo apt-get install libxml2-dev;
sudo apt-get install libxslt1-dev;
sudo apt-get install python-setuptools;
2、安装Scrapy
sudo easy_install Scrapy;
wang@ubuntu:/usr/local/lib/python2.7/dist-packages$ sudo easy_install Scrapy
Searching for Scrapy
Best match: Scrapy 0.16.1
Processing Scrapy-0.16.1-py2.7.egg
Scrapy 0.16.1 is already the active version in easy-install.pth
Installing scrapy script to /usr/local/bin
Using /usr/local/lib/python2.7/dist-packages/Scrapy-0.16.1-py2.7.egg
Processing dependencies for Scrapy
Searching for lxml
Reading http://pypi.python.org/simple/lxml/
Reading http://codespeak.net/lxml
Best match: lxml 3.0.1
Downloading http://pypi.python.org/packages/source/l/lxml/lxml-3.0.1.tar.gz#md5=0f2b1a063ab3b6b0944cbc4a9a85dcfa
Processing lxml-3.0.1.tar.gz
Running lxml-3.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-qibAzL/lxml-3.0.1/egg-dist-tmp-mSvUVN
Building lxml version 3.0.1.
Building without Cython.
Using build configuration of libxslt 1.1.26
Building against libxml2/libxslt in the following directory: /usr/lib/x86_64-linux-gnu
warning: no files found matching '*.txt' under directory 'src/lxml/tests'
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree__getFilenameForFile’:
src/lxml/lxml.etree.c:26310:7: warning: variable ‘__pyx_clineno’ set but not used [-Wunused-but-set-variable]
src/lxml/lxml.etree.c:26309:15: warning: variable ‘__pyx_filename’ set but not used [-Wunused-but-set-variable]
src/lxml/lxml.etree.c:26308:7: warning: variable ‘__pyx_lineno’ set but not used [-Wunused-but-set-variable]
src/lxml/lxml.etree.c: In function ‘__pyx_pf_4lxml_5etree_4XSLT_18__call__’:
src/lxml/lxml.etree.c:132608:81: warning: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [enabled by default]
src/lxml/lxml.etree.c:130569:52: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseContext *’
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree__copyXSLT’:
src/lxml/lxml.etree.c:133997:79: warning: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [enabled by default]
src/lxml/lxml.etree.c:130569:52: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseContext *’
src/lxml/lxml.etree.c: At top level:
src/lxml/lxml.etree.c:12128:13: warning: ‘__pyx_f_4lxml_5etree_displayNode’ defined but not used [-Wunused-function]
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFile’:
src/lxml/lxml.etree.c:86715:3: warning: ‘__pyx_r’ may be used uninitialized in this function [-Wuninitialized]
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree_11_BaseParser__parseDoc’:
src/lxml/lxml.etree.c:86403:3: warning: ‘__pyx_r’ may be used uninitialized in this function [-Wuninitialized]
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree_11_BaseParser__parseUnicodeDoc’:
src/lxml/lxml.etree.c:86093:3: warning: ‘__pyx_r’ may be used uninitialized in this function [-Wuninitialized]
src/lxml/lxml.etree.c: In function ‘__pyx_f_4lxml_5etree_11_BaseParser__parseDocFromFilelike’:
src/lxml/lxml.etree.c:86925:3: warning: ‘__pyx_r’ may be used uninitialized in this function [-Wuninitialized]
Adding lxml 3.0.1 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/lxml-3.0.1-py2.7-linux-x86_64.egg
Searching for w3lib>=1.2
Reading http://pypi.python.org/simple/w3lib/
Reading http://github.com/scrapy/w3lib
Best match: w3lib 1.2
Downloading http://pypi.python.org/packages/source/w/w3lib/w3lib-1.2.tar.gz#md5=f929d5973a9fda59587b09a72f185a9e
Processing w3lib-1.2.tar.gz
Running w3lib-1.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ZAXTgy/w3lib-1.2/egg-dist-tmp-aU3vpc
zip_safe flag not set; analyzing archive contents...
Adding w3lib 1.2 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/w3lib-1.2-py2.7.egg
Searching for Twisted>=8.0
Reading http://pypi.python.org/simple/Twisted/
Reading http://www.twistedmatrix.com
Reading http://twistedmatrix.com/products/download
Reading http://twistedmatrix.com/
Reading http://tmrc.mit.edu/mirror/twisted/Twisted/9.0/
Reading http://tmrc.mit.edu/mirror/twisted/Twisted/10.0/
Reading http://twistedmatrix.com/projects/core/
Reading http://tmrc.mit.edu/mirror/twisted/Twisted/8.2/
Reading http://tmrc.mit.edu/mirror/twisted/Twisted/8.1/
Best match: Twisted 12.2.0
Downloading http://pypi.python.org/packages/source/T/Twisted/Twisted-12.2.0.tar.bz2#md5=9a321b904d01efd695079f8484b37861
Processing Twisted-12.2.0.tar.bz2
Running Twisted-12.2.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-kw897y/Twisted-12.2.0/egg-dist-tmp-sZWFYb
In file included from /usr/include/python2.7/Python.h:8:0,
from twisted/internet/_sigchld.c:9:
/usr/include/python2.7/pyconfig.h:1161:0: warning: "_POSIX_C_SOURCE" redefined [enabled by default]
/usr/include/features.h:215:0: note: this is the location of the previous definition
twisted/internet/_sigchld.c: In function ‘got_signal’:
twisted/internet/_sigchld.c:15:13: warning: variable ‘ignored_result’ set but not used [-Wunused-but-set-variable]
Adding Twisted 12.2.0 to easy-install.pth file
Installing mailmail script to /usr/local/bin
Installing conch script to /usr/local/bin
Installing pyhtmlizer script to /usr/local/bin
Installing twistd script to /usr/local/bin
Installing lore script to /usr/local/bin
Installing tkconch script to /usr/local/bin
Installing tapconvert script to /usr/local/bin
Installing ckeygen script to /usr/local/bin
Installing tap2rpm script to /usr/local/bin
Installing manhole script to /usr/local/bin
Installing trial script to /usr/local/bin
Installing cftp script to /usr/local/bin
Installing tap2deb script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg
Finished processing dependencies for Scrapy
表示安装成功。
3、测试
scrapy shell http://ziki.cn
获取所有a标签
hxs.select('//a').extract()
参考资料
http://doc.scrapy.org/en/latest/intro/install.html
http://doc.scrapy.org/en/latest/intro/tutorial.html

如何在scrapy框架下,用python实现爬虫自动跳转页面来抓去网页内容??

爬虫跟踪下一页的方法是自己模拟点击下一页连接,然后发出新的请求。请看:
item1 = Item()yield item1item2 = Item()yield item2req = Request(url='下一页的链接', callback=self.parse)yield req
注意使用yield时不要用return语句。
Scrapy是一个用Python写的Crawler Framework,简单轻巧,并且非常方便。Scrapy使用Twisted这个异步网络库来处理网络通信,架构清晰,并且包含了各种中间件接口,可以灵活地完成各种需求。Scrapy整体架构如下图所示:
根据架构图介绍一下Scrapy中的各大组件及其功能:
Scrapy引擎(Engine):负责控制数据流在系统的所有组建中流动,并在相应动作发生触发事件。
调度器(Scheduler):从引擎接收Request并将它们入队,以便之后引擎请求request时提供给引擎。
下载器(Downloader):负责获取页面数据并提供给引擎,而后提供给Spider。
Spider:Scrapy用户编写用于分析Response并提取Item(即获取到的Item)或额外跟进的URL的类。每个Spider负责处理一个特定(或一些网站)。
Item Pipeline:负责处理被Spider提取出来的Item。典型的处理有清理验证及持久化(例如存储到数据库中,这部分后面会介绍存储到MySQL中,其他的数据库类似)。
下载器中间件(Downloader middlewares):是在引擎即下载器之间的特定钩子(special hook),处理Downloader传递给引擎的Response。其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能(后面会介绍配置一些中间并激活,用以应对反爬虫)。
Spider中间件(Spider middlewares):是在引擎及Spider之间的特定钩子(special hook),处理Spider的输入(response)和输出(Items即Requests)。其提供了一个简便的机制,通过插入自定义的代码来扩展Scrapy功能。

pycharm运行scrapy需要什么配置

1、安装scrapy:在pycharm中使用pip命令安装scrapy;
2、配置pycarm:在pycharm中配置scrapy,新建scrapy项目,设置scrapy框架;
3、添加scrapy库:在pycharm中添加scrapy库,使pycharm可以识别scrapy;
4、设置python解释器:设置pycharm使用python3解释器;
5、设置scrapy脚本:在pycharm中添加scrapy脚本,将scrapy脚本添加到pycharm中,使pycharm可以运行scrapy脚本。

怎么样使用Python的Scrapy爬虫框架

创造一个项目
在你要抓取之前,首先要建立一个新的Scrapy项目。然后进去你的存放代码目录,执行如下命令。
?
1

scrapy startproject tutorial

它将会创建如下的向导目录:
复制代码 代码如下:
tutorial/
scrapy.cfg
tutorial/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
这是一些基本信息:
scrapy.cfg: 项目的配置文件。
tutorial/: 项目的python模块, 在这里稍后你将会导入你的代码。
tutorial/items.py: 项目items文件。
tutorial/pipelines.py: 项目管道文件。
tutorial/settings.py: 项目配置文件。
tutorial/spiders/: 你将要放入你的spider到这个目录中。
有些人问,开发网络爬虫应该选择Nutch、Crawler4j、WebMagic、scrapy、WebCollector还是其他的?这里按照我的经验随便扯淡一下:
上面说的爬虫,基本可以分3类:
1.分布式爬虫:Nutch
2.JAVA单机爬虫:Crawler4j、WebMagic、WebCollector
3. 非JAVA单机爬虫:scrapy

第一类:分布式爬虫
爬虫使用分布式,主要是解决两个问题:
1)海量URL管理
2)网速
现在比较流行的分布式爬虫,是Apache的Nutch。但是对于大多数用户来说,Nutch是这几类爬虫里,最不好的选择,理由如下:
1)Nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫。Nutch运行的一套流程里,有三分之二是为了搜索引擎而设计的。对精抽取没有太大的意义。也就是说,用Nutch做数据抽取,会浪费很多的时间在不必要的计算上。而且如果你试图通过对Nutch进行二次开发,来使得它适用于精抽取的业务,基本上就要破坏Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新写一个分布式爬虫框架了。
2)Nutch依赖hadoop运行,hadoop本身会消耗很多的时间。如果集群机器数量较少,爬取速度反而不如单机爬虫快。
3)Nutch虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的Nutch插件,提供精抽取的功能。但是开发过Nutch插件的人都知道,Nutch的插件系统有多蹩脚。利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精抽取系统了。而且Nutch并没有为精抽取提供相应的插件挂载点。Nutch的插件有只有五六个挂载点,而这五六个挂载点都是为了搜索引擎服务的,并没有为精抽取提供挂载点。大多数Nutch的精抽取插件,都是挂载在“页面解析”(parser)这个挂载点的,这个挂载点其实是为了解析链接(为后续爬取提供URL),以及为搜索引擎提供一些易抽取的网页信息(网页的meta信息、text文本)。
4)用Nutch进行爬虫的二次开发,爬虫的编写和调试所需的时间,往往是单机爬虫所需的十倍时间不止。了解Nutch源码的学习成本很高,何况是要让一个团队的人都读懂Nutch源码。调试过程中会出现除程序本身之外的各种问题(hadoop的问题、hbase的问题)。
5)很多人说Nutch2有gora,可以持久化数据到avro文件、hbase、mysql等。很多人其实理解错了,这里说的持久化数据,是指将URL信息(URL管理所需要的数据)存放到avro、hbase、mysql。并不是你要抽取的结构化数据。其实对大多数人来说,URL信息存在哪里无所谓。
6)Nutch2的版本目前并不适合开发。官方现在稳定的Nutch版本是nutch2.2.1,但是这个版本绑定了gora-0.3。如果想用hbase配合nutch(大多数人用nutch2就是为了用hbase),只能使用0.90版本左右的hbase,相应的就要将hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比较有误导作用,Nutch2的教程有两个,分别是Nutch1.x和Nutch2.x,这个Nutch2.x官网上写的是可以支持到hbase 0.94。但是实际上,这个Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之后的一个版本,这个版本在官方的SVN中不断更新。而且非常不稳定(一直在修改)。
所以,如果你不是要做搜索引擎,尽量不要选择Nutch作为爬虫。有些团队就喜欢跟风,非要选择Nutch来开发精抽取的爬虫,其实是冲着Nutch的名气(Nutch作者是Doug Cutting),当然最后的结果往往是项目延期完成。
如果你是要做搜索引擎,Nutch1.x是一个非常好的选择。Nutch1.x和solr或者es配合,就可以构成一套非常强大的搜索引擎了。如果非要用Nutch2的话,建议等到Nutch2.3发布再看。目前的Nutch2是一个非常不稳定的版本。

Scrapy主要包括哪些组件_scrapy框架的组成部分分别是什么

Scrapy运行流程:
首先,引擎从调度器中取出一个链接(URL)用于接下来的抓取
引擎把URL封装成一个请求(Request)传给下载器,下载器把资源下载下来,并封装成应答包(Response)
然后,爬虫解析Response
若是解析出实体(Item),则交给实体管道进行进一步的处理。
若是解析出的是链接(URL),则把URL交给Scheler等待抓取
具体组件如下:
引擎(Scrapy):用来处理整个系统的数据流处理,触发事务(框架核心)
调度器(Scheler):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址
下载器(Downloader):用于下载网页内容,并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
爬虫(Spiders):爬虫是主要干活的,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
项目管道(Pipeline):负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
下载器中间件(DownloaderMiddlewares):位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
爬虫中间件(SpiderMiddlewares):介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。
调度中间件(SchelerMiddewares):介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

Scrapy和Requests的post请求详解

1、scrapy框架发送post请求有两种格式
2、requests发送post请求,传递的参数也分两种格式(data和json)
scrapy.Request()请求与requests.post()请求用法相同,得到的数据也是相同的 。
首先,我们先看下FormRequest的部分源码:
阅读源码可以得知: FormRequest:只能提交表单数据 FormRequest会将 formdata 传递的字典转化为 urlencode 进行 表单 数据的提交
方法一
首先我们阅读下JsonRequest源码:
阅读源码可以得知: JSONRequest 已经做了 json.dumps 操作
方法二

Python编程基础之(五)Scrapy爬虫框架

如果您对数据采集和爬虫感兴趣,我可以向您介绍一下八爪鱼采集器。八爪鱼采集器是一款功能全面、操作简单、适用范围广泛的互联网数据采集器,可以帮助您快速获取所需的数据。八爪鱼采集器提供了智能识别和灵活的自定义采集规则设置,无需编程和代码知识即可轻松上手。如果您想了解更多关于八爪鱼采集器的信息,请前往官网了解更多详情。八爪鱼为用户准备了一系列简洁易懂的教程,帮助大家快速掌握采集技巧,轻松应对各类网站数据采集,请前往官网教程与帮助了解更多详情。
经过前面四章的学习,我们已经可以使用Requests库、Beautiful Soup库和Re库,编写基本的Python爬虫程序了。那么这一章就来学习一个专业的网络爬虫框架--Scrapy。没错,是框架,而不是像前面介绍的函数功能库。
Scrapy是一个快速、功能强大的网络爬虫框架。
可能大家还不太了解什么是框架,爬虫框架其实是实现爬虫功能的一个软件结构和功能组件的集合。
简而言之, Scrapy就是一个爬虫程序的半成品,可以帮助用户实现专业的网络爬虫。
使用Scrapy框架,不需要你编写大量的代码,Scrapy已经把大部分工作都做好了,允许你调用几句代码便自动生成爬虫程序,可以节省大量的时间。
当然,框架所生成的代码基本是一致的,如果遇到一些特定的爬虫任务时,就不如自己使用Requests库搭建来的方便了。
PyCharm安装
测试安装:
出现框架版本说明安装成功。
掌握Scrapy爬虫框架的结构是使用好Scrapy的重中之重!
先上图:
整个结构可以简单地概括为: “5+2”结构和3条数据流
5个主要模块(及功能):
(1)控制所有模块之间的数据流。
(2)可以根据条件触发事件。
(1)根据请求下载网页。
(1)对所有爬取请求进行调度管理。
(1)解析DOWNLOADER返回的响应--response。
(2)产生爬取项--scraped item。
(3)产生额外的爬取请求--request。
(1)以流水线方式处理SPIDER产生的爬取项。
(2)由一组操作顺序组成,类似流水线,每个操作是一个ITEM PIPELINES类型。
(3)清理、检查和查重爬取项中的HTML数据并将数据存储到数据库中。
2个中间键:
(1)对Engine、Scheduler、Downloader之间进行用户可配置的控制。
(2)修改、丢弃、新增请求或响应。
(1)对请求和爬取项进行再处理。
(2)修改、丢弃、新增请求或爬取项。
3条数据流:
(1):图中数字 1-2
1:Engine从Spider处获得爬取请求--request。
2:Engine将爬取请求转发给Scheduler,用于调度。
(2):图中数字 3-4-5-6
3:Engine从Scheduler处获得下一个要爬取的请求。
4:Engine将爬取请求通过中间件发送给Downloader。
5:爬取网页后,Downloader形成响应--response,通过中间件发送给Engine。
6:Engine将收到的响应通过中间件发送给Spider处理。
(3):图中数字 7-8-9
7:Spider处理响应后产生爬取项--scraped item。
8:Engine将爬取项发送给Item Pipelines。
9:Engine将爬取请求发送给Scheduler。
任务处理流程:从Spider的初始爬取请求开始爬取,Engine控制各模块数据流,不间断从Scheduler处获得爬取请求,直至请求为空,最后到Item Pipelines存储数据结束。
作为用户,只需配置好Scrapy框架的Spider和Item Pipelines,也就是数据流的入口与出口,便可完成一个爬虫程序的搭建。Scrapy提供了简单的爬虫命令语句,帮助用户一键配置剩余文件,那我们便来看看有哪些好用的命令吧。
Scrapy采用命令行创建和运行爬虫
PyCharm打开Terminal,启动Scrapy:
Scrapy基本命令行格式:
具体常用命令如下:
下面用一个例子来学习一下命令的使用:
1.建立一个Scrapy爬虫工程,在已启动的Scrapy中继续输入:
执行该命令,系统会在PyCharm的工程文件中自动创建一个工程,命名为pythonDemo。
2.产生一个Scrapy爬虫,以教育部网站为例http://www.moe.gov.cn:
命令生成了一个名为demo的spider,并在Spiders目录下生成文件demo.py。
命令仅用于生成demo.py文件,该文件也可以手动生成。
观察一下demo.py文件:
3.配置产生的spider爬虫,也就是demo.py文件:
4.运行爬虫,爬取网页:
如果爬取成功,会发现在pythonDemo下多了一个t20210816_551472.html的文件,我们所爬取的网页内容都已经写入该文件了。
以上就是Scrapy框架的简单使用了。
Request对象表示一个HTTP请求,由Spider生成,由Downloader执行。
Response对象表示一个HTTP响应,由Downloader生成,有Spider处理。
Item对象表示一个从HTML页面中提取的信息内容,由Spider生成,由Item Pipelines处理。Item类似于字典类型,可以按照字典类型来操作。

阅读更多 >>>  linux注释命令是什么意思

网站数据信息

"scrapy框架教程,如何在ubuntu中安装scrapy"浏览人数已经达到18次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:scrapy框架教程,如何在ubuntu中安装scrapy的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!