本节案例为分布式爬取智房网站(合肥地区)的全部房子的名字和价格,相关url安徽合肥房产_合肥房价_最新热门楼盘信息-智房网
在爬虫文件下导入相关包:
1.编写爬虫类项目(基于crawlspider的rules自动发请求):
这里的域名和起始url需要注释,class类的父类要改为RedisCrawlSpider,添加一个新属性:redis_key = 'sun' 可以被共享的调度器队列的名称
2.编写items类
返回的item是我们的房产名字和价格
3.增加相关setting里的配置:
增加请求头,机器人协议改为false,返回错误日志
接着增加redis相关配置,指定管道,调度器,本机的端口号等
4.下载redis,配置相关环境变量
-修改其中redis.windows.conf的项目信息
-将bind 127.0.0.1进行删除
- 关闭保护模式:protected-mode yes改为no
在系统变量中path加入下载的redis路径
之后打开cmd命令,输入redis-server启动redis,新建一个cmd命令输入redis-cli进入客户端
以上启动成功
5.运行项目
在python终端输入 scrapy runspider xxx(爬虫文件名称).py
在redis里
- 向调度器的队列中放入一个起始的url:
- 调度器的队列在redis的客户端中
- lpush xxx(之前的redis_key) www.xxx.com(起始url)
查看目录:
发现items信息已经存储到我们本地中,
查看我们的长度,已经获取548条信息
查看信息:
只截取一部分(太多了),里面的name为乱码要设置utf-8,价格正常。
总结:
这是在一台电脑上运行的项目,如果在多台电脑上运行,只需要将python的项目文件发给其余电脑运行,只需要一台电脑输入- lpush xxx(之前的redis_key) www.xxx.com(起始url) ,最终全部数据会保存在一台电脑上即可,时间会缩短,运行效率会有很大提高。