Scrapy 分布式数据采集方案
运行环境 CentOS7. + Python2. + Scrapy1. + MongoDB3. + BeautifulSoup4.
编程工具 PyCharm + Robomongo + Xshell 请确保你的 python版本为2..5以上 版本
强烈推荐直接【翻 墙 安 装】,简单轻松
yum install gcc libffi-devel python-devel openssl-devel
pip install scrapy 如果提示以下错误
AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'
说明你的 Twisted 版本过高,请执行
pip install Twisted==16.4. 然后再安装以下内容
pip install scrapyd
pip install scrapy-mongodb
pip install beautifulsoup4
pip install scrapy-redis
pip install pymongo
pip install scrapyd-client
pip install Pillow
pip install python-scrapyd-api # windows下安装方法也是一样的,推荐顺手安装一下windows版本,这样在 IDE(PyCharm)下能够得到Scrapy的代码提示,而且不会报 类不存在 的错误 然后执行
scrapy startproject fusnion
就可以创建一个名为 funsion 的项目 附录A:Scrapy Shell 调试
Linux 命令行下输入(以本站点为例)
scrapy shell 'http://www.cnblogs.com/funsion/'
进入交互式shell,输入以下内容
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(response.body, 'html.parser')
>>> print soup.title
如果能输出 <title>Funsion Wu - 博客园</title> 则代表成功 附录B:参考文档
Scrapy 中文文档 http://scrapy-chs.readthedocs.org/zh_CN/latest/index.html
参考文档 https://piaosanlang.gitbooks.io/spiders/01day/README1.html
Scrapyd 文档 http://scrapyd.readthedocs.io/en/stable/
BeautifulSoup 中文手册 http://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
Scrapy-Redis 文档 http://scrapy-redis.readthedocs.io/en/stable/
Scrapy-Mongodb 文档 https://github.com/sebdah/scrapy-mongodb
Pillow 文档 http://pillow.readthedocs.io/en/latest/index.html
Python-Scrapyd-Api 文档 http://python-scrapyd-api.readthedocs.io/en/latest/
参考文档 http://www.pastandnow.com/2015/11/16/Use-Scrapyd-client-Deploy-Spider/ 附录C:mongodb安装方法
下载文件 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.6.tgz
tar zxf mongodb-linux-x86_64-rhel70-3.4..tgz
cd mongodb-linux-x86_64-rhel70-3.4./
mkdir -p /data/{mongodb_data,mongodb_log}
ln -s /usr/local/src/mongodb-linux-x86_64-rhel70-3.4./bin/mongo /usr/local/bin/
nohup /usr/local/src/mongodb-linux-x86_64-rhel70-3.4./bin/mongod --dbpath=/data/mongodb_data --logpath=/data/mongodb_log/mongodb.log --logappend --fork > /dev/null >& &
编辑/etc/rc.local,加入下述代码然后再保存即可。
nohup /usr/local/src/mongodb-linux-x86_64-rhel70-3.4./bin/mongod --dbpath=/data/mongodb_data --logpath=/data/mongodb_log/mongodb.log --logappend --fork > /dev/null >& & 附录D:Scrapy代理解决方案
https://github.com/TeamHG-Memex/scrapy-rotating-proxies
https://github.com/luyishisi/Anti-Anti-Spider (防采集策略)
http://www.cnblogs.com/kylinlin/p/5242266.html (Scrapy+Tor防采集) 附录E:Scrapy-Demo地址
https://gitee.com/funsion_wu/demo/tree/master/scrapy
Scrapy架构图


Scrapy-Redis架构图


Scrapy 分布式数据采集方案的更多相关文章
- Memcached常规应用与分布式部署方案
1.Memcached常规应用 $mc = new Memcache(); $mc->conncet('127.0.0.1', 11211); $sql = sprintf("SELE ...
- Window Redis分布式部署方案 java
Redis分布式部署方案 Window 1. 基本介绍 首先redis官方是没有提供window下的版本, 是window配合发布的.因现阶段项目需求,所以研究部署的是window版本的,其实都 ...
- Python爬虫从入门到放弃(二十)之 Scrapy分布式原理
关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列. 分布式架 ...
- scrapy分布式的几个重点问题
我们之前的爬虫都是在同一台机器运行的,叫做单机爬虫.scrapy的经典架构图也是描述的单机架构.那么分布式爬虫架构实际上就是:由一台主机维护所有的爬取队列,每台从机的sheduler共享该队列,协同存 ...
- Python爬虫【五】Scrapy分布式原理笔记
Scrapy单机架构 在这里scrapy的核心是scrapy引擎,它通过里面的一个调度器来调度一个request的队列,将request发给downloader,然后来执行request请求 但是这些 ...
- 第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点
第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点 1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题
- 基于Solr和Zookeeper的分布式搜索方案的配置
1.1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...
- ebay分布式事务方案中文版
http://cailin.iteye.com/blog/2268428 不使用分布式事务实现目的 -- ibm https://www.ibm.com/developerworks/cn/clou ...
- Python 爬虫之 Scrapy 分布式原理以及部署
Scrapy分布式原理 关于Scrapy工作流程 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享 ...
随机推荐
- PHP之冒号、endif、endwhile、endfor 是什么鬼?f
解释:其实这些都是PHP的语法,只不过不常用而已,这些都是PHP流程控制的替代语法. 冒号(:)相当于是 左大括号---->{ endif.endwhile.endfor.endforeach- ...
- 购物车 cookie session
0-服务器识别用户的目的:服务器存有不同用户的信息,而对这些信息,服务器自身.网站开发管理者.网站访问者会对其读写: 1-暂且存入服务器数据库,购物车分为2种表:购物车入车表和购物车下单表: 2-单个 ...
- Python 之网络编程
# 流程描述: # # 1. 服务器根据地址类型(ipv4, ipv6), socket类型, 协议创建socket; # # 2. 服务器为socket绑定ip地址和端口号; # # 3. 服务器s ...
- Hdu 2457 DNA repair (ac自己主动机+dp)
题目大意: 改动文本串的上的字符,使之不出现上面出现的串.问最少改动多少个. 思路分析: dp[i][j]表示如今 i 个字符改变成了字典树上的 j 节点. 然后顺着自己主动机一直转移方程. 注意合法 ...
- mysql数据库从删库到跑路之mysql库操作
一 知识储备 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student, ...
- Delphi APP 開發入門(六)Object Pascal 語法初探
Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_sh ...
- Linux系统常用命令示例
1.在跟下创建一个目录,目录的名字为data # mkdir /data2.在data目录里创建一个文件,文件名为yunjisuan.txt # touch /data/yunjisuan.txt3. ...
- SQL Server创建事务——锁
参考地址:http://www.cnblogs.com/knowledgesea/p/3714417.html 事务定义: 事务是作为单个逻辑单元执行的一系列操作,它是一个不可分割的工作逻辑单元.它包 ...
- ruby中的私有方法和保护方法
ruby中的私有方法是指方法只能被隐含调用,不能被显示调用.而当没有显示接收者的时候,会把self当成接收者.因此,只能在自身中调用私有方法,这也是私有方法的调用规则. ruby的私有方法机制目的是: ...
- Oracle数据库面试题(转)
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...