Python分布式爬虫案例(scrapy+crawlspider+scrapy_redis)

本节案例为分布式爬取智房网站(合肥地区)的全部房子的名字和价格,相关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) ,最终全部数据会保存在一台电脑上即可,时间会缩短,运行效率会有很大提高。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值