分享

PySpider 使用过程中的问题记录...

 ekylin 2021-12-30

问题记录

PyCurl的问题

安装时出现:

  • Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-vqUn8V/pycurl

  • ImportError: pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)

这个问题是系统的libcurl编译方式引起的,更改环境变量为openssl即可。

解决方法来自这里

解决方式:

sudo pip uninstall pycurl# 设置环境变量export PYCURL_SSL_LIBRARY=openssl

wsgidav的问题

运行时出现Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.

此问题是因为wsgidav最新版为3.x,pyspider采用的是2.x,写法上不兼容老版本,因此解决方法有两种:

  • 将wsgidav卸载后安装指定2.4.1版本


    1. pip uninstall wsgidav
    2. pip install wsgidav==2.4.1
  • 修改pyspider文件


    解决方法来自这里

    1. # pyspider文件路径 pyspider/webui/webdav.py
    2. # 209行:'domaincontroller': NeedAuthController(app)
    3. # 修改如下
    4. config = DEFAULT_CONFIG.copy()
    5. config.update({
    6. 'mount_path': '/dav',
    7. 'provider_mapping': {
    8. '/': ScriptProvider(app)
    9. },
    10. #'domaincontroller': NeedAuthController(app),
    11. 'http_authenticator': {
    12. 'HTTPAuthenticator':NeedAuthController(app),
    13. },
    14. 'verbose': 1 if app.debug else 0,
    15. 'dir_browser': {'davmount': False,
    16. 'enable': True,
    17. 'msmount': False,
    18. 'response_trailer': ''},
    19. })
    20. dav_app = WsgiDAVApp(config)

tornado的问题

同上描述,默认安装的tornado为5.x,与pyspider所使用的老版本不兼容,卸载后安装指定4.x把版本即可。

 pip install tornado==4.5

ModuleNotFoundError: No module named 'MySQLdb'

缺少包,python2环境下pip安装mysqldb,python3环境下安装MySQLclient

connect to scheduler rpc error: error(111, 'Connection refused’)

这个问题没解决……

爬虫框架是分组件的,pyspider在运行时可以直接pyspider all,也可以单独运行scheduler,如果是前者,跑一会就会出现这个错误,如果是后者,得跑好一会才会出现,无法查到相关资料。

pyspider和scrapy对比哪个好?

没有哪个好哪个不好,适合自己的才是最好,那么哪个才是适合自己的?

pyspider自带webui,可以在浏览器中写代码(很不方便),其代码存储在sqlite3中的,作者说是为了方便做分布式,但我在使用时都是在pycharm中写完再复制到浏览器中,虽然pyspider也提供了webdav,可以将代码映射到本地,但还是很不方便,喏,上面wsgidav的bug就这么产生的:(

pyspider运行时可以「单步调试」,非常适合新手期,爬虫运行的每一步都可以在浏览器中看到。

而scrapy是纯命令行模式,如果要跑在服务器上,也需要配合一些爬虫管理框架,如scrapydScrapydWeb

scrapy的中间件是一大亮点,别人写好的你可以直接拿来用。

麻烦是麻烦了点,但你学会后就犹如手握屠龙刀,强大无匹。

还有scrapy的官网比较漂亮,文档相当清晰,pyspider的文档应该是N年没更新了,且不详细。

截止到写本文时,pyspider的最后一个release版本是2018年4月18的0.3.10,开发版是到今年3月份,项目几乎是作者一个人维护,所以在issue和更新上不如scrapy。

总结一下,个人建议,仅供参考,如果是刚入门的新手,建议学习下pyspider练手,毕竟多学一点又不亏,如果是公司项目,建议scrapy。


本文最先发表于个人网站「花墨世界」

关注公众号查看我的更多文章:花墨世界

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多