小项目-数据爬取篇:scrapy-redis,手机网页,房天下租房信息,分布式,代理ip

本文介绍了使用scrapy-redis搭建分布式爬虫,从手机端房天下租房页面抓取数据的过程。通过分析网页结构,发现翻页请求并提取URL,利用redis进行去重和存储。同时,设置了代理IP中间件,将URL存入redis,并在另一个爬虫中读取URL抓取详细信息,最终将数据保存到MongoDB。
摘要由CSDN通过智能技术生成

环境:

这回要用分布式:我使用两台电脑,一台win10 系统,用来爬信息,一台ubuntu 16.04用来爬url,数据库redis,MongoDB都用的ubuntu上的,没有两台电脑在一个电脑上开两个爬虫也是一样的。

安装scrapy-redis

pip install scrapy-redis

scrapy-redis 和 scrapy用法基本相同,就是scrapy-redis跟redis库的粘合性更高一些,直接把url放到redis的key中,给出相应key,爬虫自己获取url进行爬取,url没了会等待这种永动式爬取,而且redis还会进行去重处理,避免数据爬取重复。
先创建个名字叫做zufang_scrapy的爬虫

scrapy startproject zufang_scrapy

在项目中创建zufang genspider:

scrapy genspider zufang "https://m.fang.com/zf/bj/"

pycharm打开,新建usa.py 和 begin.py 一个用来放user-agent 一个启动爬虫,上一章已经讲过了,结构如下:
这里写图片描述
settings加入:

#启用Redis调度存储请求队列
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

#确保所有的爬虫通过Redis去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

REDIS_URL = 'redis://:你的密码@localhost:6379' 

接下来分析网页,目标网站,手机端房天下租房,城市北京,手机端电脑访问上一章有教
这就是网站第一页了:
这里写图片描述
网页右键查看元素,发现这个跟智联招聘的不同,这个不是翻页,而是下拉触发请求,我们切换到网络,下拉看看情况:
这里写图片描述
发现了每次下拉翻页,都会在XHR中返回一个文件,看一下内容,正式我们想要的租房信息,但是这个链接怪怪的一堆乱码,复制在网页里打卡,发下没有内容,于是我打开了chrome,打开https://m.fang.com/zf/bj/?jhtype=zf这个链接后做同样的事儿,发现url是这样的:
这里写图片描述
虽然还是一些奇怪的编码,但是至少不是乱码了,我们复制下拉,网页打开以下:
这里写图片描述
是乱码,但是有内容了,我们在scrapy中试试:

class ZufangSpider(scrapy.Spider):
    name = "zufang"
    allowed_domains = ["m.fang.com"]
    start_urls = ['https://m.fang.com/zf/?purpose=%D7%A1%D5%AC&jhtype=zf&city=%B1%B1%BE%A9&renttype=cz&c=zf&a=ajaxGetList&city=bj&r=0.743897934517868&page=3']

    def parse(self, response):
        print(response.body)

发现结果是二进制,就是编码问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值