● pyspider简介
pyspider 是国人binux 编写的强大的网络爬虫框架,它带有强大的WebUI 、脚本编辑器、任务监
控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息队列,另外还支持JavaScript
渲染页面的爬取,使用起来非常方便,本节介绍一下它的安装过程。
- 相关链接
官方文档:http: //docs.pyspider.org /
PyPI:https://pypi.python.org/pypi/pyspider
GitHub:https://github.corn/binux/pyspider
官方教程: http://docs.pyspider.org/en/latest/tutorial
在线实例: http:// demo.pyspider.org - pyspider 基本功能
我们总结了一下, PySpider 的功能有如下几点。
1)提供方便易用的WebUI系统,可视化地编写和调试爬虫;
2)提供爬取进度监控、爬取结果查看、爬虫项目管理等功能;
3)支持多种后端数据库,如MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL;
4)支持多种消息队列,如RabbitMQ、Beanstalk、Redis、Kombu;
5)提供优先级控制、失败重试、定时抓取等功能;
6)对接了PhantomJS ,可以抓取JavaScript 渲染的页面;
7)支持单机和分布式部署,支持Docker 部署。 - pyspider 的架构
pyspider的架构主要分为Scheduler(调度器)、Fetcher( 抓取器)、Processer(处理器)三个部分,
整个爬取过程受到Monitor(监控器)的监控,抓取的结果被Result Worker (结果处理器)处理,如图所示。
Scheduler发起任务调度,Fetcher负责抓取网页内容,Processer负责解析网页内容,然后将新生
成的Request发给Scheduler进行调度,将生成的提取结果输出保存。
● pyspider安装
- Windows平台推荐使用pip 安装,命令如下:
pip install pyspider
命令执行完毕即可完成安装,目前最新版本为pyspider-0.3.10。 - 这么简单就安装成功了吗?当然不是!下面介绍pyspider安装、启动出现的问题及解决方案:
1)pycurl安装错误
直接通过pip install pyspider
安装,会出现如下错误
Collecting pycurl (from pyspider)
Using cached https://files.pythonhosted.org/packages/ac/b3/0f3979633b7890bab6098d84c84467030b807a1e2b31f5d30103af5a71ca/pycurl-7.43.0.3.tar.gz
ERROR: Complete output from command python setup.py egg_info:
ERROR: Please specify --curl-dir=/path/to/built/libcurl
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 10 in ..\Temp\pip-install-t1_mhflp\pycurl\
这个问题的最简单的解决办法: 利用wheel安装对应的pycurl
- 安装wheel: pip install wheel
- 下载pycurl编译安装包:访问:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应Python版本的编译包
- 进入pycurl编译包放置的目录下,安装pycurl,我的电脑是python3.7 32位:pip install pycurl-7.43.0.3-cp37-cp37m-win32.whl
- 接下来便可以成功安装pyspider
Successfully installed Flask-1.1.1 Flask-Login-0.4.1 Jinja2-2.10.1 MarkupSafe-1.1.1 PyYAML-5.1.1 Werkzeug-0.15.4 certifi-2019.6.16 chardet-3.0.4 click-7.0 cssselect-1.0.3 defusedxml-0.6.0 idna-2.8 itsdangerous-1.1.0 jsmin-2.2.2 lxml-4.3.4 pyquery-1.4.0 pyspider-0.3.10 requests-2.22.0 six-1.12.0 tblib-1.4.0 tornado-4.5.3 u-msgpack-python-2.5.1 urllib3-1.25.3 wsgidav-3.0.0
2)语法错误:SyntaxError: invalid syntax
安装pyspider后就可以启动试试,如果你是python3.7之前的版本,那么恭喜你,你是不会出现这个问题的,如果你是python3.7版本,运行pyspider all
后会错误提示信息如下:
File "..\lib\site-packages\pyspider\run.py", line 231
async=True, get_object=False, no_input=False):
^
SyntaxError: invalid syntax
原因是async和await从 python3.7 开始已经加入保留关键字中。 参考: What’s New In Python 3.7,所以async不能作为函数的参数名。
- 修改…\lib\site-packages\pyspider路径下的python文件中的async为shark(全部替换,该名称可随意定义)
① run.py
② webui\app.py
③ etcher\tornado_fetcher.py
from tornado.curl_httpclient import CurlAsyncHTTPClient
from tornado.simple_httpclient import SimpleAsyncHTTPClient
tornado_fetcher.py文件替换async时,请注意如上两行,若没有区分大小写会将其也替换,这将会导致其他报错!
3)ValueError: Invalid configuration
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator
- 原因是因为WsgiDAV发布了版本 pre-release 3.x。
- 这里提供两个解决方案:
① 在安装包中找到pyspider的资源包,然后找到wsgidav文件里面的wsgidav_app.py文件打开,修改第96行即可。
把"domaincontroller": "http_authenticator.domain_controller",
修改为:"http_authenticator.domaincontroller": "http_authenticator.domain_controller",
② 降低wsgidav版本pip install wsgidav==2.4.1
4)停顿在result_worker startin…
[I 190715 23:24:36 result_worker:49] result_worker starting...
解决方案:
①关闭防火墙;
②关闭杀毒软件;
③重启电脑。
至此,pyspider已可成功运行,这里warn可以忽略,不影响正常使用。
(spider_env) F:\Envs\spider_env>pyspider all
f:\envs\spider_env\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
warnings.warn("timeout is not supported on your platform.", FutureWarning)
phantomjs fetcher running on port 25555
[I 190715 23:43:36 result_worker:49] result_worker starting...
[I 190715 23:43:37 processor:211] processor starting...
[I 190715 23:43:37 scheduler:647] scheduler starting...
[I 190715 23:43:37 scheduler:586] in 5m: new:0,success:0,retry:0,failed:0
[I 190715 23:43:38 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333
[I 190715 23:43:39 tornado_fetcher:638] fetcher starting...
[I 190715 23:43:41 app:76] webui running on 0.0.0.0:5000
最后访问localhost:5000,附上成功安装完pyspider的界面。希望本文能帮助各位解决Windows平台上安装pyspider的问题!