本次分布式爬虫爬取的是北京证券网全站新闻数据,记在本次开发分布式爬虫程序中的一些比较深刻的坑,把参考的几篇教程记录下来同时分享给大家
(1).虚拟机安装centos系统
系统安装是在网上找的视频一步一步跟着敲的,但因为系统版本和视频的不一样,加上卡顿,导致一些步骤没有做,比如跳过了给系统分配IP地址的步骤。幸而网上有教程解决这个问题,教程放在段尾。
分配到IP,证明虚拟机是可用的,随后直接在该系统上安装python3、scrapy、scrapy-redis、python的redis库、pymongo和mongodb数据库,直接安装好后,可以使用系统的快照功能,快速copy出同样的centos系统,作为从机。另外需要注意的是,在copy前,需要把刚才开启的ip分配取消,否则copy出的程序会分配同一个ip,等各个从机系统都安装好了,再按教程给每一个从机分配ip地址
教程:为虚拟机分配IP
(2).安装scrapy
在网上找到的教程推荐先装好依赖包,再装scrapy,但遗憾的是即是我已经按照教程走了,可还是出错了,错误如下
src/twisted/test/raiser.c:4:20: fatal error: Python.h
: No such file or directory #include "Python.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokeni
ze;__file__='/tmp/pip-install-xueL0r/twisted/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-7ZoA5z/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-xueL0r/twisted/
按照网上大佬的说法,是需要安装python-dev,构建安装环境,但是我搜到的安装方法目前只保证了python2的安装,不能解决python3的问题,于是我只能用比较简单也比较无脑的办法,安装anaconda,借此安装第三方库
(3).安装redis
redis的安装并没有太多可说,为了最大限度的减少出错的可能,使用了网友的教程,源地址奉上。
教程:redis的安装
(4).安装mongodb
数据保存选择mongodb数据库,因为其是最接近SQL数据库的NOSQL数据库,能很好的保存爬取到的结构化数据,mongodb的安装同样采用网友成熟的方案,源地址奉上。但因为mongodb的使用必须在防火墙中开放27017的端口,否则使用会报错,关于端口开放奉上教程。
教程:mongodb的安装
教程:关于开放端口
(5).爬虫部署在阿里云上
本想除了虚拟机,同时也将一台阿里云服务器当作slave从机,但连接redis显示socket connect timeout,问题出在忽略了局域网和外网的连接,部署在虚拟机上的爬虫可以使用局域网ip运行是因为master主机和虚拟机的slave从机在一个局域网下,而云服务器使用外网连接,无法找到master,故此部署失败。
(6).源码地址
源码分享在GitHub上。
地址:https://github.com/yangshenchang/bjzq.git