问题记录
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版本
pip uninstall wsgidav pip install wsgidav==2.4.1
-
修改pyspider文件
# pyspider文件路径 pyspider/webui/webdav.py # 209行:'domaincontroller': NeedAuthController(app) # 修改如下 config = DEFAULT_CONFIG.copy() config.update({ 'mount_path': '/dav', 'provider_mapping': { '/': ScriptProvider(app) }, #'domaincontroller': NeedAuthController(app), 'http_authenticator': { 'HTTPAuthenticator':NeedAuthController(app), }, 'verbose': 1 if app.debug else 0, 'dir_browser': {'davmount': False, 'enable': True, 'msmount': False, 'response_trailer': ''}, }) 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是纯命令行模式,如果要跑在服务器上,也需要配合一些爬虫管理框架,如scrapyd和ScrapydWeb。
scrapy的中间件是一大亮点,别人写好的你可以直接拿来用。
麻烦是麻烦了点,但你学会后就犹如手握屠龙刀,强大无匹。
还有scrapy的官网比较漂亮,文档相当清晰,pyspider的文档应该是N年没更新了,且不详细。
截止到写本文时,pyspider的最后一个release版本是2018年4月18的0.3.10,开发版是到今年3月份,项目几乎是作者一个人维护,所以在issue和更新上不如scrapy。
总结一下,个人建议,仅供参考,如果是刚入门的新手,建议学习下pyspider练手,毕竟多学一点又不亏,如果是公司项目,建议scrapy。
本文最先发表于个人网站「花墨世界」
关注公众号查看我的更多文章:花墨世界