pyspider 安装 和 快速开始

 

From:官方文档 --- 快速开始:http://docs.pyspider.org/en/latest/Quickstart/

pyspider github 地址:https://github.com/binux/pyspider

pyspider 官方文档:http://docs.pyspider.org/en/latest/

爬虫框架 pyspider个人总结(详细)熟悉:https://www.jianshu.com/p/39c7371dd6c2

 

 

python3.7+ 与 pyspider 的坑

 

python3.7+ 与 pyspider 的坑:https://zhuanlan.zhihu.com/p/115629460

 

安装 pyspider :pip install pyspider

安装之后先验证是否安装成功,在CMD下输入

pyspider  # 或者 pyspider all,但是后面执行 pyspider all 好像还卡死。。。
          # 两者是一样的,新的 pyspider框架已经整合了,所以使用 pyspider 就好

执行完报错:

Traceback (most recent call last):
  File "/ffk_learn/software/Python-3.7.0/ffk_py/bin/pyspider", line 7, in 
    from pyspider.run import main
  File "/ffk_learn/software/Python-3.7.0/ffk_py/lib/python3.7/site-packages/pyspider/run.py", line 231
    async=True, get_object=False, no_input=False):
        ^
SyntaxError: invalid syntax

因为从 python3.5 开始把 async 和 await 设为关键字了,这里 async 作为参数名与关键字冲突了。

解决方法:将相关脚本里面的 async 换一个名字即可,当然最好还是要 pyspider 的大佬更新下 pyspider 脚本。涉及的脚本文件有以下 3 个:

  • 1 ffk_py/lib/python3.7/site-packages/pyspider/run.py
  • 2 ffk_py/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py 
  • 3     ffk_py/lib/python3.7/site-packages/pyspider/webui/app.py 

找到对应的 py 文件,将 async 修改为其他名称,

我这里修改为 shark ( 我本机路径:C:\Python38\Lib\site-packages\pyspider )。在以下几个文件中存在:

pyspider ---> run.py
pyspider ---> fetcher ---> tornado_fetcher.py
pyspider ---> webui   ---> app.py

修改时注意:不要全部替换,只替换函数中的参数,和字段部分

修改完后,使用 pyspider 命令,输入 http://localhost:5000 运行出现下面错误

ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator

原因是因为 WsgiDAV 发布了版本 pre-release 3.x。

解决方法如下:在安装包中找到 pyspider 的资源包,然后找到 webui 文件里面的 webdav.py 文件打开,

pyspider 安装 和 快速开始_第1张图片

修改第 209 行:

'domaincontroller': NeedAuthController(app),

修改为:

'http_authenticator':{
    'HTTPAuthenticator':NeedAuthController(app),
},

修改后截图:

pyspider 安装 和 快速开始_第2张图片

如果不想修改源文件,第二种方法:降低版本,因为 3.0 的版本不兼容,所以替换为 2.4.1

pip uninstall wsgidav
pip install wsgidav==2.4.1

这里使用修改源码的方式,修改完,保存,然后再执行 pyspider ,这时会报如下错误:

原因:

  • 1、没有安装 werkzeug
  • 2、werkzeug 的版本为 1.0.0,这个版本中没有 DispatcherMiddleware 方法

解决办法:卸载 werkzeug,重新安装低版本的 werkzeug

# 卸载
python -m pip uninstall werkzeug

# 安装指定版本
python -m pip install werkzeug==0.16.0

# 0.16 版本不行可以再试 0.15 版本 
# python -m pip install werkzeug==0.15
 

再次执行 pyspider ( 执行 pyspider all  一直卡到 result_worker starting… ,不知道为啥。网上说如果一直卡在 result_worker starting,可以新打开一个终端(这个终端暂时不关),再次输入pyspider,输入完成后再关闭第一个终端),说明成功了

pyspider 安装 和 快速开始_第3张图片

浏览器访问 http://localhost:5000 就可以打开页面了。

pyspider 安装 和 快速开始_第4张图片

 

 

 

pyspider 介绍

 

 

 

 

快速上手

 

安装之后先验证是否可以正常使用

  1. 打开控制台, cd到你要创建的项目路径

  2. 输入pyspider 或 pyspider all 

  3. 当看到如下信息时说明 pyspider 启动成功

    (base) D:\pyspider_test\test1>pyspider
    c:\users\zh\anaconda3\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.", Future
    Warning)
    [I 191030 19:27:06 result_worker:49] result_worker starting...
    [I 191030 19:27:06 processor:211] processor starting...
    [I 191030 19:27:06 tornado_fetcher:638] fetcher starting...
    [I 191030 19:27:06 scheduler:647] scheduler starting...
    [I 191030 19:27:06 scheduler:782] scheduler.xmlrpc listening on 127.
    0.0.1:23333
    [I 191030 19:27:06 scheduler:126] project douban_top250 updated, sta
    tus:TODO, paused:False, 0 tasks
    [I 191030 19:27:06 scheduler:586] in 5m: new:0,success:0,retry:0,fai
    led:0
    [I 191030 19:27:07 app:76] webui running on 0.0.0.0:5000
    phantomjs fetcher running on port 25555
    
    
  4. 打开浏览器, 访问 http://localhost:5000/,进入 pyspider 控制台

  5. 点击 Create ,输入 项目名(Project Name )和 要爬取的 目标网站(Start URL(s))

  6. 你将会看到这样一个页面:

    pyspider 安装 和 快速开始_第5张图片

     

  7. 代码区没有自动补全功能, 你可以在 pycharm 上写好粘过来,再进行调试,以 www.baidu.com 为例

  8. 调试好之后,回退到主页面,将状态改为 DEBUG 就可以运行爬取工作了

    pyspider 安装 和 快速开始_第6张图片

     

  9. 你可以通过把鼠标放到 progress 中的4个进度条上以查看执行状态详情, 当all变成纯绿色, 就代表爬虫执行完毕

  10. 点击 Results, 可以查看你爬取到的内容

 

 

删除项目

 

第一种方法,将目标项目的status改成STOP,然后点击[group],输入delete,如图,

pyspider 会在 24H 后自动删掉这个项目

第二种方法,到你创建项目的文件夹,删除 data 文件夹,就会删除当前文件夹中所有的项目

 

 

 

 

你可能感兴趣的:(python,爬虫相关)