开源爬虫框架pyspider介绍、安装步骤(Windows平台)

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 (结果处理器)处理,如图所示。
                    pyspider 的架构
      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的问题!
pyspider

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值