Scrapy框架
Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和
自动化测试
。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
1
、整体架构
2、Scrapy主要包括了以下组件:
u引擎(Scrapy)
用来处理整个系统的数据流处理, 触发事务(框架核心)
u调度器(Scheduler)
用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
u下载器(Downloader)
用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
u爬虫(Spiders)
爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
3、Scrapy运行流程大概如下:
①
引擎从调度器中取出一个链接(URL)用于接下来的抓取
②
引擎把URL封装成一个请求(Request)传给下载器
③
下载器把资源下载下来,并封装成应答包(Response)
④
爬虫解析Response
⑤
解析出实体(Item),则交给实体管道进行进一步的处理
⑥
解析出的是链接(URL),则把URL交给调度器等待抓取
4、安装
(
1
)第一步安装
lxml
利用
pip install lxml
lxml是个非常有用的python库,它可以灵活高效地解析xml,与BeautifulSoup、requests结合,是编写爬虫的标准姿势。
安装向导:
http://jingyan.baidu.com/article/ad310e80feaac71849f49e98.html
(
2
)第二步安装
zope.interface pip install zope.interface
Python
支持多继承,但是不支持接口,
zope.inteface
是其三方的接口实现库,在
twisted
中有大量使用
(
3
)第三步安装
twisted
pip install
twisted
Twisted是用
Python
实现的基于事件驱动的网络引擎框架。Twisted诞生于2000年初他支持很多种协议,包括UDP,TCP,TLS和其他应用层协议,比如HTTP,SMTP,NNTM,IRC,XMPP/Jabber。 非常好的一点是twisted实现和很多应用层的协议,开发人员可以直接只用这些协议的实现。其实要修改Twisted的SSH服务器端实现非常简单。很多时候,开发人员需要实现protocol类。
一个Twisted程序由reactor发起的主循环和一些回调函数组成。当事件发生了,比如一个client连接到了server,这时候服务器端的事件会被触发执行。
(
4
)第四步安装pyOpenSSL
pip install pyOpenSSL
生成网络安全需要的
CA
和证书
(
5
)第五步安装py
win32 pip install pywin32
pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量、接口、线程以及COM机制等等
下载地址:
https://sourceforge.net/projects/pywin32/files/pywin32/
下载后双击安装
若之后仍显示
cannot import name '_win32stdio‘
则cmd中运行pip install pypiwin32
(
6
)第六步安装
Scrapy pip install scrapy
scrapy 不同于简单的单线程爬虫,采用scrapy框架写python爬虫需要生成许多个文件,这一件类似于java里面的web框架,许多工作都可以通过一些配置文件来完成。
5、创建项目
scrapy 不同于简单的单线程爬虫,采用scrapy
框架写python爬虫需要生成许多个文件,这一件类似于java里面的web框架,许多工作都可以通过一些配置文件来完成。
scrapy startproject doubanTest
如果成功,目录下会有如下结构:
到此为止,安装成功。接下来就是使用scrapy了!