如何租到靠谱的房子?Scrapy爬虫帮你一网打尽各平台租房信息!

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

又是一年n度的找房高峰期,各种租赁信息眼花缭乱,如何快速、高效的找到靠谱的房子呢?

不堪忍受各个租房网站缭乱的信息,一位技术咖小哥哥最近开发了一个基于 Scrapy 的爬虫项目,聚合了来自豆瓣,链家,58 同城等上百个城市的租房信息,统一集中搜索感兴趣的租房信息,还突破了部分网站鸡肋的搜索功能。

通过这个“秘密武器”,这位技术咖已经使用该爬虫找到合适的住所。

不仅如此,还很无私地整理了项目代码,并放上了Github。

Github链接:

https://github.com/kezhenxu94/house-renting

接下来,跟着文摘菌一起来看看这波酷炫的操作。

环境部署

Python版本:Python 2 || Python 3

爬虫框架:Scrapy

操作系统:Mac || Linux || Windows

服务引擎:Docker

获取源码

$ git clone https://github.com/kezhenxu94/house-renting

$ cd house-renting
启动服务

使用 Docker(推荐)

 

$ docker-compose up --build -d

环境及版本:Mac Docker CE 版,具体版本号为 Version 18.03.1-ce-mac65 (24312)。

为了方便用户使用该项目,作者提供了部署本项目所需要用到的服务的 docker-compose.yml 文件,但由于 Docker 本身的局限性,导致在 Windows 非专业版上必须使用 Docker Toolbox 并因此带来了许多问题,详细参考:

http://support.divio.com/local-development/docker/how-to-use-a-directory-outside-cusers-with-docker-toolbox-on-windowsdocker-for-windows

如果你遇到这样的问题, 可以在这里给提 Issue,如果你遇到并自己解决了这样的问题,欢迎在这里提 Pull Request帮助优化该项目!

Issue:

https://github.com/kezhenxu94/house-renting/issues

Pull Request:

https://github.com/kezhenxu94/house-renting/pulls

手动部署 (不推荐)

安装 Elasticsearch 5.6.9 和 Kibana 5.6.9 并启动

下载并安装 Elasticsearch 和 Kibana,下载地址为:

https://www.elastic.co/downloads/past-releases

安装 Redis 并启动

下载并安装 Redis,下载地址为:

https://redis.io/download

在 crawler/house_renting/settings.py 文件中配置相关的主机和端口:

# ES 节点, 可以配置多个节点(集群), 默认为 None, 不会存储到 ESELASTIC_HOSTS = [ {'host': 'elastic', 'port': 9200},]

REDIS_HOST = 'redis' # 默认为 None, 不会去重REDIS_PORT = 6379 # 默认 6379

安装 Python 依赖

 

$ cd crawler

$ pip install -r requirements.txt

选择要扒取的城市(目前支持链家, 58 同城):

选择需要从链家扒取的城市:

打开 crawler/house_renting/spider_settings/lianjia.py 文件,按照注释提示完成城市选择;

# ...# 只需要在这个列表中添加以下 available_cities 中的城市, 如果只需要扒取一个城市也需要使用一个括号包围, 如 (u'广州')

cities = (u'广州', u'北京')

# ...

选择需要从 58 同城扒取的城市:

打开 crawler/house_renting/spider_settings/a58.py 文件, 按照注释提示完成城市选择:

# ...# 只需要在这个列表中添加以下 available_cities 中的城市, 如果只需要扒取一个城市也需要使用一个括号包围, 如 (u'广州')

cities = (u'广州', u'北京')

# ...

启动爬虫

在不同的命令行窗口中启动需要扒取的网站爬虫

$ scrapy crawl douban # 扒取豆瓣

$ scrapy crawl lianjia # 扒取链家

$ scrapy crawl 58 # 扒取 58 同城

到这里,恭喜你!房屋信息已经成功爬取到了,一起来看看爬取结果吧!

查看结果

看图选房

爬虫运行扒取到数据后会有 house_renting/data目录被创建,其中的 images 文件夹下载了租房信息中的图片,用户可以使用图片浏览器查看该文件夹中的图片,看到合适的房子图片后,使用图片文件名到 Kibana 中搜索,找到相应的租房信息详情。

搜索关键字

打开浏览器,定位到 http://127.0.0.1:5601 (请根据 Docker 的 IP 相应更改 Kibana 对应的 URL 地址)。

设置索引模式

在下图中的 Index pattern 输入框中输入 house_renting,然后按下 TAB 键,Create 按钮会变为可用状态,此时点击 Create 按钮;如果此时 Create 按钮还不能用,是因为爬虫还没有扒取到数据入 Elasticsearch,需要多等一会儿,如果长时间这样,需要检查爬虫服务是否启动成功。

e69f71c8133ef45a67b5911c6388d7563971e56a

温馨提示

如果环境配置正确,运行结果不正确,原因有可能是网站做了升级,读者朋友们可以去项目介绍页面更新代码后再次尝试。作者会根据业余时间和精力不断更新项目,感兴趣的朋友可以持续关注哦。


原文发布时间为:2018-05-31

本文作者:文摘菌

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
数据采集 存储 数据处理
Scrapy:Python网络爬虫框架的利器
在当今信息时代,网络数据已成为企业和个人获取信息的重要途径。而Python网络爬虫框架Scrapy则成为了网络爬虫工程师的必备工具。本文将介绍Scrapy的概念与实践,以及其在数据采集和处理过程中的应用。
23 1
|
4月前
|
数据采集 调度 Python
Scrapy爬虫中合理使用time.sleep和Request
Scrapy爬虫中合理使用time.sleep和Request
|
19小时前
|
数据采集 存储 中间件
【专栏】Scrapy:解锁网络爬虫新境界
【4月更文挑战第27天】Scrapy是Python的高效爬虫框架,以其异步处理、多线程和中间件机制提升爬取效率。它的灵活性体现在可定制化组件、支持多种数据库存储及与Selenium、BeautifulSoup等工具集成。Scrapy易于扩展,允许自定义下载器和解析器。在实践中,涉及项目配置、Spider类编写、数据抓取、存储与分析。面对动态网页和反爬机制,Scrapy可通过Selenium等工具应对,但需注意法规与道德规范。随着技术发展,Scrapy将在网络爬虫领域持续发挥关键作用。
|
5天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
1月前
|
数据采集 Web App开发 搜索推荐
项目配置之道:优化Scrapy参数提升爬虫效率
项目配置之道:优化Scrapy参数提升爬虫效率
|
2月前
|
数据采集 Web App开发 文字识别
高并发数据采集:Ebay商家信息多进程爬虫的进阶实践
高并发数据采集:Ebay商家信息多进程爬虫的进阶实践
|
3月前
|
数据采集 存储 调度
Scrapy:解锁网络爬虫新境界
在当今信息爆炸的时代,获取并处理大量网络数据是互联网行业中至关重要的一环。Python网络爬虫框架Scrapy作为一款高效、灵活的工具,为开发者提供了强大的能力来抓取、解析和存储各类网页信息。本文将介绍Scrapy的概念、主要特点以及实践经验,帮助读者掌握这一工具,并在实际项目中应用。
|
3月前
|
数据采集 存储 机器人
Scrapy网络爬虫框架——从入门到实践
网络爬虫已经成为了信息获取的必备工具之一,而Scrapy作为Python中最流行的网络爬虫框架之一,具有高效、可扩展、易用等特点。本文将深入介绍Scrapy框架的概念和实践,帮助读者快速掌握构建高质量网络爬虫的方法。
66 0
|
3月前
|
数据采集 存储 调度
Scrapy:从入门到实践的网络爬虫框架
Scrapy是一款强大的Python网络爬虫框架,可以帮助开发者更高效地抓取互联网上的数据。本文将介绍Scrapy的概念和基本原理,详细讲解如何使用Scrapy框架实现一个简单的网络爬虫,并分享一些实战经验和技巧。
|
3月前
|
数据采集 存储 调度
Scrapy:高效的Python网络爬虫框架
在信息时代,数据的获取和分析已经成为了一项重要的技能。而网络爬虫则是实现数据采集的一种常用手段。Scrapy作为一个高效、灵活的Python网络爬虫框架,其具备强大的扩展性、高度的可配置性以及良好的兼容性。本文将从Scrapy的概念入手,介绍其基本原理、使用方法以及实际应用案例。