Scrapy
Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。
什么是框架?
就是一个具有很强通用性且集成了很多功能的项目模板(可以被应用在各种需求中)
- scrapy集成好的功能:
- 高性能的数据解析操作(xpath)
- 高性能的数据下载
- 高性能的持久化存储
- 中间件
- 全栈数据爬取操作
- 分布式:redis
- 请求传参的机制(深度爬取)
- scrapy中合理的应用selenium
Scrapy Engine(引擎):
负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器):
它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):
负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
Spider(爬虫):
它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
Item Pipeline(管道):
它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件):
你可以当作是一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):
你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)
爬虫的五个步骤:
- 需求
- 找到需要的URL
- 下载url对应的信息(Downloader)
- 解析这些信息, 获取特定的信息(spiders)
- 存储这些信息(ItemPipeline)
特殊的是, schedule.
scrapy的安装步骤:
这里举例python3.6 64位安装步骤:
pip install wheel
pip install C:\Users\Administrator\Desktop\爬虫\安装Scrapy需要文件\Twisted-18.9.0-cp36-cp36m-win_amd64.whl
pip install pywin32
pip install scrapy
说明:
1.pip install wheel
.whl文件:轮子。source是源代码,如果包含C++的话需要编译;而wheel 是编译后的二进制发布格式,可以直接使用pip安装.whl文件。pip 默认的也是先下载wheel文件安装,没有的话再源码编译安装。
whl格式本质上是一个压缩包,里面包含了py文件,以及经过编译的pyd文件。使得可以在不具备编译环境的情况下,选择合适自己的python环境进行安装。
而安装whl文件之前,需要先安装whell包。
2.下载twisted 链接
下载twisted why?
这是因为 Scrapy 需要依赖、大量第三方包。典型的,Scrapy 需要依赖如下第三方包:
- pyOpenSSL:Python 用于支持 SSL(Security Socket Layer)的包。
- cryptography:Python 用于加密的库。 CFFI:Python 用于调用 C 的接口库。
- ope.interface:为 Python 缺少接口而提供扩展的库。 lxml:一个处理 XML、HTML 文档的库,比 Python 内置的 xml 模块更好用。
- cssselect:Python 用于处理 CSS 选择器的扩展包。 Twisted:为 Python 提供的基于事件驱动的网络引擎包。
…
如果在 Python 环境下没有这些第三方包,那么 Python 会根据依赖自动下载并安装它们。
但 pip 在自动下载、安装 Twisted 时会提示以下错误:
error:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”:http://landinghub.visualstudio.com/visual-cpp-build-tools
按照上面的错误提示,我们需要先下载和安装 Microsoft Visual C++ Build Tools 工具,然后才能安装 Twisted。为了安装一个小小的 Twisted 包,难道就需要安装一个庞大的 Microsoft Visual C++ Build Tools?
error:Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”:http://landinghub.visualstudio.com/visual-cpp-build-tools
答案是否定的,提示上面的错误只是因为 pip 自动下载的 Twisted 安装包有一些缺陷,因此可以先自行下载 Twisted 安装包。
Twisted文件名说明
cp后是python 版本,32或64按照自己电脑来。
当前 Twisted 的最新版是 18.9.0,Twisted 为 2.7、3.5、3.6、3.7 等不同版本的 Python 提供了对应的安装包。由于本教程内容主要以 Python 3.6 为主,因此应该下载 Twisted 的 Python 3.6 版本,其中文件名带 win32 的是 32 位版本,而带 win_amd64 的则是 64 位版本,此处还需要根据操作系统的位数选择对应的版本。
在下载了合适的 Twisted 安装包后,会得到一个 Twisted-18.9.0-cp36-cp36m-win_amd64.whl文件(针对 64 位系统的),该文件就是 Twisted 安装包。
3. 安装Twisted:
进入下载目录,cd到下载目录执行 (对应版本)
pip install Twisted-18.9.0-cp36-cp36m-win_amd64.whl
或
pip install 路径+Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
在安装过程中会自动检查,如有必要,会自动下载并安装 Twisted 所依赖的第三方包,如 zope.interface、Automat、incremental 等。
在安装完成后,会提示如下安装成功的信息:在成功安装 Twisted 包之后,再次执行 pip install scrapy 命令,即可成功安装 Scrapy。在安装成功后,会显示如下提示信息:
Successfully installed Twisted-18.9.0
4. pip install pywin32:
pywin32的主要作用
1.捕获窗口;2.模拟鼠标键盘动作;3.自动获取某路径下文件列表;4.PIL截屏功能
在Windows平台上,从原来使用C/C++编写原生EXE程序,到使用Python编写一些常用脚本程序,成熟的模块的使用使得编程效率大大提高了。
不过,python模块虽多,也不可能满足开发者的所有需求。而且,模块为了便于使用,通常都封装过度,有些功能无法灵活使用,必须直接调用Windows API来实现。
要完成这一目标,有两种办法,一种是使用C编写Python扩展模块,或者就是编写普通的DLL通过python的ctypes来调用,但是这样就部分牺牲掉了Python的快速开发、免编译特性。
还好,有一个模块pywin32可以解决这个问题,它直接包装了几乎所有的Windows API,可以方便地从Python直接调用,该模块另一大主要功能是通过Python进行COM编程。
5. pip install scrapy
在成功安装 Twisted 包之后,再次执行 pip install scrapy 命令,即可成功安装 Scrapy。在安装成功后,会显示如下提示信息:
Successfully installed Scrapy-1.6.1
在成功安装 Scrapy 之后,可以通过 pydoc 来查看 Scrapy 的文档。在命令行窗口中输入如下命令:
python -m pydoc -p 8899
运行上面命令之后,打开浏览器查看 http://localhost:8899/ 页面,可以在 Python 安装目录的lib\site-packages