继上次Scrapy爬取猫眼电影之后,这几天学习了Scrapy-Redis分布式来提高爬取效率,也算是停留在舒适圈一段时间后往前走了一步!!
准备工作
MongoDB
Redis
Scrapy-Redis
Scrapy
这次爬取的是上海自如租房,相信在魔都生活的小伙伴们如果不是本地人,租房费用占了每月开销很大的一部分,我们来看下租房体验比较好的自如,除了价格贵外 - -!!
实战应用
创建一个工程
scrapy startproject ziru
第一步 编辑item.py
- 首先,引入Scrapy
- 接着,创建一个类,继承自scrapy.item,这个是用来储存要爬下来的数据的存放容器
第二步 获取网页数据
在spider文件下创建spider.py
|
|
- 比起Scrapy,又多引入了 from scrapy_redis.spiders import RedisCrawlSpider
- start_urls变为redis_key = ‘ziroomspider:start_urls’ 作为所有链接存储到 redis
- 爬取rule还是一个链接为翻页,一个为详情页链接
第三步 编辑管道pipeline.py
|
|
编辑MongoDBpipelines,将获取的数据存入MongoDB数据库中
第四步 编辑middlewares.py
在中间件中写入随机选取伪造请求头来防止spider被封掉
|
|
第五步 设置setting.py
这一步要修改配置了
|
|
好了,所有的配置全部部署完了,现在来启动spider来爬取数据吧!!
scrapy crawl ziroom
spider启动,它在等待我们的指令来爬取
打开redis-cli
lpush ziroomspider:start_urls http://sh.ziroom.com/z/nl/z2.html?qwd=
我开了六个spider来爬取,电脑CPU有几个处理器就能开几个,我是8核,最多能开8个,接下来准备学习docker来部署spider
完整代码
简书
[欢迎访问Treehl的博客(https://family-treesy.github.io/)
最后放一个爬虫集合,是我最近学习Python写的,喜欢的亲!给个Star呗!!!
SpiderList