爬虫框架的安装
直接用requests、Selenium等库写爬虫,当爬取量不是太大,速度要求不高,是完全可以满足要求的。但是写多了会发现内部许多代码和组件是可以复用的,如果我们把这些组件抽离出来,将各个功能模块化,就慢慢会形成一个框架雏形,然后爬虫框架就形成了。
利用框架,我们可以不用再去关心莫些共能得具体实现,只需要关心爬取逻辑即可。有了塔门,可以大大简化代码量,而且框架也会变得清晰,爬取效率也会高许多。所以,如果有一定得基础,上手框架是一种好的选择。
爬虫框架有pyspider和Scrapy。下面是pyspider、Scrapy及其扩展库的安装方式。
1. pyspider的安装
pyspider是国人binux编写的强大的网络爬虫框架,它带有强大的WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,同时支持多种数据库后端、多种消息列队,另外还支持Javascript渲染页面的爬取,使用起来非常方便。
准备工作
pyspider是支持Javascript渲染的,而这个过程是依赖于PhantonJS的,所以还需要安装PhantomJS(安装见1.2.5节)
pip安装
pip安装,命令如下:
pip3 install pyspider
常见错误
Windows下可能会出现这样的错误提示:
错误显示无效的语法,导致这种情况的原因是在更新的python3 中,已经将async 设置为关键字,而pyspider 版本更新缓慢并没有在此处修改,所以导致pyspider 不能正常启动。
解决方法:
打开安装Python的位置:python位置\Lib\site-packages\pyspider
比如我的安装位置:D:\ProgramData\Anaconda3\Lib\site-packages\pyspider
修改下列python文件中的async为shark(全部替换)
run.py
webui\app.py
特别注意: 还有一个地方就是fetcher\tornado_fetcher.py这个文件还需要需改,这个里面的async不是都需要替换,这个文件中的CurlAsyncHTTPClient含有async,不需要改。IDE打开文件
使用Ctrl+r替换run.py、webui\app.py、还有fetcher\tornado_fetcher中的asnyc
cmd命令输入: pyspider all
浏览器输入http://localhost:5000, 就会进入 pyspider 的WebUI管理页面,这样我们的pyspider 就安装成功了。
其他问题可以参考:
2. Scrapy
Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0、lxml 3.4和pyOpenSSL 0.14。在不同的平台环境下,她所依赖的库也各不同,所以在安装之前,最好确保把一些基本库安装好。
Anaconda安装
这是一种比较简单的安装Scrapy的方法,当然你的python首先必须是Anaconda安装的,这种方法简单、省力。如果已经安装了Anaconda,就可以通过conda命令安装Scrapy,命令:
conda install Scrapy
3. Scrapy-Splash的安装
Scrapy-Splash是一个Scrapy中支持Javascript渲染的工具,
Scrapy-Splash的安装分为两部分。一个是Splash服务的安装,具体是通过Docker,安装之后,会启动一个Splash服务,我们通过它的接口来实现Javascript页面的加载,另一个是Scrapy-Splash的python库的安装,安装之后即可在Scrapy中使用Splash服务。
安装Splash
Scrapy-Splash会使用Splash的HTTP API进行页面渲染,所以需要安装Splash来提供渲染服务。我们需要Docker安装。
安装命令:
docker run -p 8050:8050 scrapinghub/splash
Splash已经在8050端口运行了,打开http://localhost:8050, 可以看到Splash的主页。
Splash也可以安装在远程服务器上,在服务器上要以守护态运行Splash即可,命令:
docker run -d -p 8050:8050 scrapinghub/splash
-d参数代表将Docker容器以守护态运行,中断远程服务器连接后,不会终止Splash服务的运行
Scrapy-Splash的安装
安装python库:
pip3 install scrapy-splash
命令运行完毕后,即安装成功。
4. Scrapy-Redis的安装
Scrapy-Redis是Scrapy的分布式扩展模块,我们就可以方便地实现Scrapy分布式爬虫的搭建。
pip安装
命令: pip3 install scrapy-redis
安装测试
python命令:
$ python
>>> import scrapy_redis
没有错误报错,则安装成功
大部分内容参照《《Python 3网络爬虫开发实战》》