人生苦短, 我用 Python
前文传送门:
小白学 Python 爬虫(1): 开篇 https://www.geekdigging.com/2019/11/13/3303836941/
小白学 Python 爬虫 (2): 前置准备(一) 基本类库的安装 https://www.geekdigging.com/2019/11/20/2586166930/
小白学 Python 爬虫(3): 前置准备(二)Linux 基础入门 https://www.geekdigging.com/2019/11/21/1005563697/
小白学 Python 爬虫(4): 前置准备(三)Docker 基础入门 https://www.geekdigging.com/2019/11/22/3679472340/
小白学 Python 爬虫 (5): 前置准备(四) 数据库基础 https://www.geekdigging.com/2019/11/24/334078215/
小编, 你还有完没完!!! 前置准备都准备这么多了, 还不开始正文!!!
别急别急, 前置准备的最后一篇了, 我们这几篇总共介绍了基本类库的安装, Linux 基础, Docker 基础和本篇的爬虫框架的安装. 主要是内容有些多, 小编怕写在一起各位同学看不下去, 所以才分成多篇内容(悄悄的说, 这样小编也能多推几天嘛).
pyspider 安装
pyspider 是由国人 binux 开源的强大的网络爬虫框架. pyspider 自带 webUI (这个很关键), 这样我们可以实时的看到更多的数据, 并且它还带有脚本编辑器, 任务监控器, 项目管理器以及结果处理器, 同时支持多种数据库后端, 多种消息队列, 还支持 JavaScript 渲染页面的爬取, 异常强大.
GitHub 链接: https://github.com/binux/pyspider
官方文档: http://docs.pyspider.org/
开始安装, 我们还是使用 pip 进行安装:
pip install pyspider
如果各位是跟着小编一步一步装环境的话, 这里应该会报错. 会报我们安装 pycurl 失败. 这里我们需要使用 wheel 进行安装.
第一步, 安装 wheel .
pip install wheel
下载 pycurl 的 wheel 文件进行安装, 下载站点: http://www.lfd.uci.edu/~gohlke/pythonlibs/ , 找到对应的 wheel 文件版本. 比如小编这里的电脑是 win64 , python3.7 , 那么就下载 pycurl7.43.0.3cp37cp37mwin_amd64.whl 这个文件.
小编这里将下载好的文件放到了 D 盘的跟目录, 顾使用以下命令安装.
pip install D:\pycurl-7.43.0.3-cp37-cp37m-win_amd64.whl
安装完成后, 重新执行上面的安装语句.
pip install pyspider
静静等待进度条读完, 完成后可以直接在命令行下启动 pyspider , 命令如下:
pyspider all
然后发现, 启动报错了, 错误内容如下:
SyntaxError: invalid syntax
因为 async 和 await 从 python3.7 开始已经加入保留关键字中. 所以 async 不能作为函数的参数名.
所以我们需要修改 pyspider 代码中有用到 async 的地方, 具体路径为:
修改 %homepath%\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyspider\ 路径下的 python 文件中的 async 为 async1 (全部替换)
run.py
fetcher\tornado_fetcher.py
webui\App.py
修改完成后, 再执行 pyspider all , 发现还是报错, 这不过这次的错误换成了:
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator
原因是因为 WsgiDAV 发布了版本 pre-release 3.x.
解决办法:
还是在刚才的路径中找到 webui 文件里面的 webdav.py 文件打开, 修改第 209 行.
将:
'domaincontroller': NeedAuthController(App),
修改为:
- 'http_authenticator':{
- 'HTTPAuthenticator':NeedAuthController(App),
- },
然后再执行 pyspider all , 发现还是起不来, 这是因为 pyspider 有依赖 PhantomJS , 我们再去下载 PhantomJS 进行安装, 下载路径为: https://phantomjs.org/download.html , 下载完成后, 从压缩包中将可执行文件 phantomjs.exe 放入 %homepath%\AppData\Local\Programs\Python\Python37\Scripts , 有没有感觉很熟悉, 对嘞, 这个和之前的 Chrome 的驱动文件放的是同一个位置.
这次我们输入 pyspider all 进行启动, 这次应该可以启动成功, 然后打开浏览器访问: http://localhost:5000/ , 可以看到如下页面:
证明我们的 pyspider 已经安装成功了.
Scrapy 安装
Scrapy 这个就不用我介绍了吧, 鼎鼎大名, 接下来我们主要介绍安装过程.
Scrapy 官网: https://scrapy.org/
各位同学的电脑环境应该和小编的相差不远(如果是使用 win10 的话), 小编也没有背着各位同学装过其他东西.
安装命令:
pip install scrapy
由于 Scrapy 依赖了大量的第三方的包, 所以在执行上面的命令后并不会马上就下载 Scrapy , 而是会先不断的下载第三方包, 包括并不限于以下几种:
pyOpenSSL:Python 用于支持 SSL(Security Socket Layer)的包.
cryptography:Python 用于加密的库.
CFFI:Python 用于调用 C 的接口库.
zope.interface: 为 Python 缺少接口而提供扩展的库.
lxml: 一个处理 xml,HTML 文档的库, 比 Python 内置的 xml 模块更好用.
CSSselect:Python 用于处理 CSS 选择器的扩展包.
Twisted: 为 Python 提供的基于事件驱动的网络引擎包.
......
等待命令执行完成后, 直接输入 scrapy 进行验证.
- Scrapy 1.8.0 - no active project
- Usage:
- scrapy <command> [options] [args]
- Available commands:
- bench Run quick benchmark test
- fetch Fetch a URL using the Scrapy downloader
- genspider Generate new spider using pre-defined templates
- runspider Run a self-contained spider (without creating a project)
- settings Get settings values
- shell Interactive scraping console
- startproject Create new project
- version Print Scrapy version
- view Open URL in browser, as seen by Scrapy
- [ more ] More commands available when run from project directory
- Use "scrapy <command> -h" to see more info about a command
如果能正常出现以上内容, 说明我们已经安装成功了.
因为小编电脑安装 Scrapy 未出现其他问题, 一切都很顺利, 无法做其他有问题情况的演示, 理论上 Scrapy 安装出现各种问题才算正常情况, 小编这种一次过的只能说是运气好.
前置准备到这里就全部结束, 我们接下来开始介绍 HTTP 基础.
参考
- http://c.biancheng.net/view/2745.html
- https://cuiqingcai.com/5407.html
来源: https://www.cnblogs.com/babycomeon/p/11946787.html