用scrapy-redis分布式爬虫爬取房天下广州的租房信息
我做过用selenium爬取房天下的租房信息也用过ajax分析接口爬取房天下的租房信息但是前两次任务都是小规模地爬取爬取的量比较小。所以这次准备大规模地爬取租房信息使用scrapy-redis分布式爬虫来爬取我只有一台电脑但是我做了两个爬虫来同时爬取一个从首页中爬取出子页面的链接一个从子页面中爬虫租房的详细信息在Pycharm下同时运行两个py文件。在settings.py文件中添加如下设置ROBOTSTXT_OBEY False DUPEFILTER_CLASS scrapy_redis.dupefilter.RFPDupeFilter SCHEDULER scrapy_redis.scheduler.Scheduler SCHEDULER_PERSIST True SCHEDULER_QUEUE_CLASS scrapy_redis.queue.SpiderPriorityQueue #处理重定向 MEDIA_ALLOW_REDIRECTS True DEFAULT_REQUEST_HEADERS { #添加请求头 Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8, Accept-Language: en, User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36, referer: https://m.fang.com/zf/bj/?jhtypezf, authority: m.fang.com, x-requested-with: XMLHttpRequest, sec-fetch-mode: cors, sec-fetch-site: same-origin } ITEM_PIPELINES { fangtianxia.pipelines.FangtianxiaPipeline: 300,#自己编写的pipeline scrapy_redis.pipelines.RedisPipeline: 400 } DOWNLOAD_DELAY 1 LOG_LEVEL DEBUG REDIS_HOST 127.0.0.1#这个端口号可以直接在spiders的py文件中添置 REDIS_PORT 6379#这个端口号可以直接在spiders的py文件中添置自定义items.pyclass FangtianxiaItem(scrapy.Item): # define the fields for your item here like: # name scrapy.Field() text scrapy.Field() dizhi scrapy.Field() zujin scrapy.Field() faxing scrapy.Field()爬取子链接的py文件zufang.py# -*- coding: utf-8 -*- import scrapy import redis from scrapy_redis.spiders import RedisSpider from ..settings import REDIS_HOST,REDIS_PORT import re class ZufangSpider(RedisSpider): name zufang # allowed_domains [fang.com] # start_urls [http://fang.com/] base_url https://m.fang.com/zf/?purpose%D7%A1%D5%ACnotGetPurpose1city%B9%E3%D6%DDrenttypeczczfaajaxGetListcitygzr0.0021985656734149206page redis_key fangtianxia:start_urls #连接到redis pool redis.ConnectionPool(hostREDIS_HOST,port REDIS_PORT,db0) redis redis.StrictRedis(connection_poolpool) for index in range(1,1000): start_url base_url str(index) redis.lpush(fangtianxia:start_urls,start_url) def parse(self, response): res response.text domainurl https://m.fang.com/zf/gz/ results re.findall(ra.*?href\\(.*?), res) # 提取子搜索页面 https://m.fang.com/zf/gz/FAGT_241762951.html for result in results: result result.split(/)[-1] href domainurl result # 拼接子url print({href:href}) self.redis.rpush(fangtianxia:house_urls,href)解析页面的文件zufang1.pyfrom scrapy_redis.spiders import RedisSpider from ..items import FangtianxiaItem class FangtianxiaSpider(RedisSpider): name fangtianxia_down redis_key fangtianxia:house_urls def parse(self,response): item FangtianxiaItem() item[text] response.xpath(/html/body/div[3]/div[1]/section[3]/div[2]/ul/li[1]/p/text()).get() item[dizhi] response.xpath(/html/body/div[3]/div[1]/section[4]/ul/li[2]/a/span/text()).get() item[zujin] response.xpath(/html/body/div[3]/div[1]/section[2]/div[1]/p/span[1]/text()).get() item[faxing] response.xpath(/html/body/div[3]/div[1]/section[2]/div[2]/ul/li[2]/p/text()).get() yield item启动文件 start.pyfrom scrapy import cmdline cmdline.execute(scrapy crawl fangtianxia_down.split())启动文件只能跑一个代码另一个代码须放在Terminal终端运行。python zufang.py在redis数据库中可以看到保存的数据将redis数据中保存的Item信息存储到mongodb中import json,redis,pymongo def main(): rediscli redis.StrictRedis(host127.0.0.1,port6379,db0) mongocli pymongo.MongoClient(hostlocalhost,port27017) db mongocli[zufang] sheet db[info] offset 0 while True: source,data rediscli.blpop([fangtianxia_down:items])#读取的数据为bytes类型 item json.loads(data.decode(utf8))#item转化为字典类型 print(type(item)) print(source) if item[text] ! None:#将值为空的信息滤掉 sheet.insert(item) offset 1 print(offset) try: print(Processing:%s%item) except KeyError: print(Error proceding: %s % item) else: continue if __name__ __main__: main()此篇爬虫主要参考这个https://www.jianshu.com/p/ba67094d2813感谢作者

相关新闻

实现装饰器模式的前提:子类中覆写父类同名方法时,父类方法仍是有效的

实现装饰器模式的前提:子类中覆写父类同名方法时,父类方法仍是有效的

今天看了装饰器模式,有一些理解,记录一下。调用过程的理解:调用过程中一直压栈,直到dress为空时开始出栈。核心思想是方法覆写和父类方法调用。抽象类public abstract class Dress{protected Dress dress;public void setDress(Dr…

2026/7/28 19:48:43 阅读更多 →
ssm整合时报错java.lang.ClassNotFoundException:org.springframework.web.bind.MissingMatrixVariableException

ssm整合时报错java.lang.ClassNotFoundException:org.springframework.web.bind.MissingMatrixVariableException

有可能是spring-web与spring-webmvc这两个包发生冲突,我删除spring-web这个包就可以了

2026/7/28 19:47:43 阅读更多 →
从零手撕Transformer:自注意力机制与PyTorch实现详解

从零手撕Transformer:自注意力机制与PyTorch实现详解

理解 Transformer 的核心原理是进入现代大模型世界的钥匙。无论是想深入理解 ChatGPT、GPT-4 等大语言模型,还是想学习 Vision Transformer、Swin Transformer 等视觉模型,亦或是想自己动手实现一个简易的 Transformer,都绕不开对其基础架构和核心思想的透彻掌握。本文将从零…

2026/7/28 19:47:42 阅读更多 →

最新新闻

p093基于大数据的房价数据分析-django+spark+spider21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p093基于大数据的房价数据分析-django+spark+spider21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p093基于大数据的房价数据分析-djangosparkspider21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ python3.7djangosparkspidermysql5.7vue 系统采用python为主体开发语言,爬取了大量的房价数据进行数据清洗、通过pandas清洗后入库…

2026/7/28 19:58:51 阅读更多 →
p087基于Hadoop的电影数据分析及可视化系统_flask+spider21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p087基于Hadoop的电影数据分析及可视化系统_flask+spider21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p087基于Hadoop的电影数据分析及可视化系统_flaskspider21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ python3.7hadoopflaskspidermysql5.7vue

2026/7/28 19:58:51 阅读更多 →
3步GPU显存稳定性终极指南:memtest_vulkan完整教程与最佳实践

3步GPU显存稳定性终极指南:memtest_vulkan完整教程与最佳实践

3步GPU显存稳定性终极指南:memtest_vulkan完整教程与最佳实践 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 你是否曾在游戏关键时刻遭遇画面撕裂&…

2026/7/28 19:58:51 阅读更多 →
英雄联盟智能工具箱:5分钟打造你的专属游戏管家

英雄联盟智能工具箱:5分钟打造你的专属游戏管家

英雄联盟智能工具箱:5分钟打造你的专属游戏管家 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中繁琐的操作而烦恼…

2026/7/28 19:58:51 阅读更多 →
SpringBoot+Vue3母婴商城系统架构与实战

SpringBoot+Vue3母婴商城系统架构与实战

1. 项目概述:母婴商城系统的技术架构与商业价值这个基于Java SpringBootVue3MyBatis的母婴商城系统,采用了典型的前后端分离架构,MySQL作为核心数据存储方案。我在实际开发中发现,母婴类电商平台相比普通电商有着更严格的合规要求…

2026/7/28 19:58:50 阅读更多 →
物联网设备安全方案:SE050与STM32F410RB硬件集成

物联网设备安全方案:SE050与STM32F410RB硬件集成

1. 为什么物联网设备需要专用安全芯片?在开始讨论SE050与STM32F410RB的组合方案前,我们需要先理解物联网设备面临的安全挑战。传统MCU(如STM32系列)虽然性能强大,但在安全防护方面存在天然短板:密钥存储风险…

2026/7/28 19:57:50 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻