PySpider官方文档
安装
phantomjs
PhantomJS 是一个基于 WebKit 的服务器端 JavaScript API。它全面支持 web 而不需浏览器支持,其快速、原生支持各种 Web 标准:DOM 处理、CSS 选择器、JSON、Canvas 和 SVG。 PhantomJS 可以用于页面自动化、网络监测、网页截屏以及无界面测试等。 安装 以上附有官方安装方式,如果你是 Ubuntu 或 Mac OS X 用户,可以直接用命令来安装 Ubuntu:
sudo apt-get install phantomjs
Mac OS X:
brew install phantomjs
pyspider
pip install pyspider
安装pyspider可能有以下错误
Using cached pycurl-7.43.0.6.tar.gz (222 kB)
ERROR: Command errored out with exit status 10:
因为安装pycurl出错,pycurl-7.43.0.6.tar.gz没有安装成功。进入pythonlibs下载lib安装。首先查看平台支持的版本。
python -m pip debug --verbose
...
Compatible tags: 24
cp36-cp36m-win_amd64
cp36-abi3-win_amd64
cp36-none-win_amd64
...
进入pythonlibs,没有pycurl-7.43.0.6.tar.gz,平台支持的有pycurl‑7.43.0.4‑cp36‑cp36m‑win_amd64.whl,那就安装这个。下载这个到本地。
安装pycurl
pip3 install C:\Python36\Scripts\pycurl-7.43.0.4-cp36-cp36m-win_amd64.whl
Processing c:\python36\scripts\pycurl-7.43.0.4-cp36-cp36m-win_amd64.whl
Installing collected packages: pycurl
Successfully installed pycurl-7.43.0.4
然后安装pyspider
pip3 install pyspider
安装成功后,命令行输入
pyspider all
有错误信息
File "c:\python36\lib\site-packages\wsgidav\wsgidav_app.py", line 118, in _check_config
raise ValueError("Invalid configuration:\n - " + "\n - ".join(errors))
ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.
配置PhantomJS
windows:在官网下载对应版本的程序,然后放到python安装目录的python.exe同级目录下。
依然有错误
File "c:\python36\lib\site-packages\pyspider\webui\app.py", line 64, in run
from werkzeug.wsgi import DispatcherMiddleware
ImportError: cannot import name 'DispatcherMiddleware'
发现还是版本的原因,werkzeug的版本为1.0.0,这个版本中没有DispatcherMiddleware方法,所以还是降低版本。
注意降低版本不能低于0.15版本,因为我们的pyspider要求大于0.15版本以上
pip3 uninstall werkzeug
pip3 install werkzeug==0.16.1
参考
启动pyspider
pyspider all
然后浏览器访问 http://localhost:5000 观察一下效果,如果可以正常出现 PySpider 的页面,那证明一切 OK 在此附图一张,如果写了爬虫,之后的界面。
常见错误
我曾遇到过的一个错误: PySpider HTTP 599: SSL certificate problem 错误的解决方法 ,后来在作者那发了 issue 得到了答案,其他的暂时没什么问题。 不过发现有的小伙伴提了各种各样的问题啊,不过我确实都没遇到过,我再 Win10,Linux Ubuntu,Linux CentOS,Mac OS X 都成功运行。不过确实有些奇怪的问题,跑着跑着崩了,一点就崩了我也就比较纳闷了。 如果大家有问题,可以看看作者项目里面有没有类似的 issue,另外也推荐大家直接到作者的 GitHub 上发 issue。 毕竟,这个框架不是我写的。 在此附上 Issue 地址: PySpider Issue