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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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月前
|
数据采集 存储 XML
高级网页爬虫开发:Scrapy和BeautifulSoup的深度整合
高级网页爬虫开发:Scrapy和BeautifulSoup的深度整合
|
3月前
|
数据采集 存储 API
在信息时代,Python爬虫用于自动化网络数据采集,提高效率。
【7月更文挑战第5天】在信息时代,Python爬虫用于自动化网络数据采集,提高效率。基本概念包括发送HTTP请求、解析HTML、存储数据及异常处理。常用库有requests(发送请求)和BeautifulSoup(解析HTML)。基本流程:导入库,发送GET请求,解析网页提取数据,存储结果,并处理异常。应用案例涉及抓取新闻、商品信息等。
84 2
|
1天前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
|
1天前
|
数据采集 中间件 Python
Scrapy爬虫框架-通过Cookies模拟自动登录
Scrapy爬虫框架-通过Cookies模拟自动登录
|
1天前
|
数据采集 中间件 数据挖掘
Scrapy 爬虫框架(一)
Scrapy 爬虫框架(一)
|
1天前
|
数据采集 XML 前端开发
Scrapy 爬虫框架(二)
Scrapy 爬虫框架(二)
|
2月前
|
数据采集 中间件 调度
Scrapy 爬虫框架的基本使用
Scrapy 爬虫框架的基本使用
|
2月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
159 6
|
2月前
|
数据采集 机器学习/深度学习 前端开发
Java爬虫中的数据清洗:去除无效信息的技巧
Java爬虫中的数据清洗:去除无效信息的技巧
|
2月前
|
数据采集 存储 JSON
Python爬虫开发:BeautifulSoup、Scrapy入门
在现代网络开发中,网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据,并且可以用于各种用途,如数据收集、信息聚合和内容监控等。在Python中,有多个库可以用于爬虫开发,其中BeautifulSoup和Scrapy是两个非常流行的选择。本篇文章将详细介绍这两个库,并提供一个综合详细的例子,展示如何使用它们来进行网页数据爬取。