您的位置:首页 > 其它

distribute_crawler项目实战

2015-08-03 17:18 441 查看

安装scrapy

https://scrapy-chs.readthedocs.org/zh_CN/latest/intro/install.html

使用pip安装:

pip install Scrapy


Ubuntu 软件包

把Scrapy签名的GPG密钥添加到APT的钥匙环中:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 627220E7


执行如下命令,创建
/etc/apt/sources.list.d/scrapy.list
文件:

echo 'deb http://archive.scrapy.org/ubuntu scrapy main' | sudo tee /etc/apt/sources.list.d/scrapy.list


更新包列表并安装
scrapy-0.25
:

sudo apt-get update && sudo apt-get install scrapy-0.25


安装redispy

sudo easy_install redis


安装pymongo

sudo pip install pymongo==2.7.2


安装graphite

/article/11085245.html

注意之后 需要每次启动
carbon


$ cd /opt/graphite/
$ sudo ./bin/carbon-cache.py start


(如何配置请查看:
statscol/graphite.py
)

配置

修改
/opt/graphite/webapp/content/js/composer_widgets.js
,

toggleAutoRefresh
函数中的
'interval'
的值由
60
改为
1


添加
storage-aggregation.conf
文件在
'/opt/graphite/conf'
目录下 :

[scrapy_min]
pattern = ^scrapy\..*_min$
xFilesFactor = 0.1
aggregationMethod = min

[scrapy_max]
pattern = ^scrapy\..*_max$
xFilesFactor = 0.1
aggregationMethod = max

[scrapy_sum]
pattern = ^scrapy\..*_count$
xFilesFactor = 0.1
aggregationMethod = sum


in settings set:

#分布式 修改如下:
STATS_CLASS = 'scrapygraphite.RedisGraphiteStatsCollector'
GRAPHITE_HOST = '127.0.0.1'
GRAPHITE_PORT = 2003
#单机 修改如下:
STATS_CLASS = 'scrapygraphite.GraphiteStatsCollector'
GRAPHITE_HOST = '127.0.0.1'
GRAPHITE_PORT = 2003


安装mongodb

为软件包管理系统导入公钥。

Ubuntu 软件包管理工具为了保证软件包的一致性和可靠性需要用 GPG 密钥检验软件包。使用下列命令导入 MongoDB 的 GPG 密钥 ( MongoDB public GPG Key http://docs.mongodb.org/10gen-gpg-key.asc)_:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10


为MongoDB创建一个列表文件。

使用下列命令创建
/etc/apt/sources.list.d/mongodb.list
列表文件:

echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list


重载本地软件包数据库:

sudo apt-get update


安装MongoDB最新的稳定版本

sudo apt-get install mongodb-org


使用下列命令启动 mongod 进程

sudo service mongod start


安装redis

wget http://download.redis.io/releases/redis-2.8.12.tar.gz tar xzf redis-2.8.12.tar.gz
cd redis-2.8.12
make




启动并运行redis:

src/redis-server


可能需要安装的其他模块

IPy


zope.interface


pip install IPy
pip install zope.interface


修改项目

使用该分支https://github.com/aware-why/distribute_crawler

修改
woaidu_detail_spider.py
WoaiduSpider
的父类

参见https://scrapy-chs.readthedocs.org/zh_CN/latest/intro/tutorial.html#spider

from scrapy.spider import BaseSpider
BaseSpider
类以过时,修改为
import scrapy
scrapy.spider.Spider


distribute_crawler/woaidu_crawler/woaidu_crawler/pipelines/file.py


line 18:
from scrapy.contrib.pipeline.images import MediaPipeline


改成:
from scrapy.contrib.pipeline.media import MediaPipeline


搭建mongodb集群

cd woaidu_crawler/commands/
sudo python init_sharding_mongodb.py --path=/usr/bin


修改
settings.py
ITEM_PIPELINES


参见https://scrapy-chs.readthedocs.org/zh_CN/latest/topics/item-pipeline.html#id4

ITEM_PIPELINES = {'woaidu_crawler.pipelines.cover_image.WoaiduCoverImage':300,
'woaidu_crawler.pipelines.mongodb_book_file.MongodbWoaiduBookFile':400,    'woaidu_crawler.pipelines.drop_none_download.DropNoneBookFile':500,
'woaidu_crawler.pipelines.mongodb.ShardMongodbPipeline':600,    'woaidu_crawler.pipelines.final_test.FinalTestPipeline':700,}


修改
woaidu_crawler/pipelines/mongodb_book_file.py
下130的

line 130:
info = self.spiderinfo.spider


info = self.spiderinfo


在含有
log
文件夹的目录下执行:需切换到root用户
sudo su


scrapy crawl woaidu


打开http://127.0.0.1/ 通过图表查看
spider
实时状态信息

要想尝试分布式,可以在另外一个目录运行此工程

搭建mongodb服务器

cd woaidu_crawler/commands/
python init_single_mongodb.py


设置settings.py:

ITEM_PIPELINES = ['woaidu_crawler.pipelines.cover_image.WoaiduCoverImage':300,
'woaidu_crawler.pipelines.bookfile.WoaiduBookFile':400,
'woaidu_crawler.pipelines.drop_none_download.DropNoneBookFile':500,
'woaidu_crawler.pipelines.mongodb.SingleMongodbPipeline':600,
'woaidu_crawler.pipelines.final_test.FinalTestPipeline':700,]


在含有
log
文件夹的目录下执行:需切换到root用户
sudo su


scrapy crawl woaidu


打开http://127.0.0.1/ (也就是你运行的graphite-web的url) 通过图表查看spider实时状态信息

要想尝试分布式,可以在另外一个目录运行此工程

注意

每次运行完之后都要执行
commands/clear_stats.py
文件来清除
redis
中的
stats
信息

python clear_stats.py
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: