• 欢迎使用千万蜘蛛池,网站外链优化,蜘蛛池引蜘蛛快速提高网站收录,收藏快捷键 CTRL + D

豆瓣如何发帖(怎么在豆瓣小组里发帖子)


豆瓣上有不少租房小组,每个小组都有自己的房源。对要寻找租房信息的用户来说,到各个小组中去查找的合适的房源信息,需要花很长的时间和精力。笔者也正是遇到这样的问题,于是写了个程序自动收集各个租房小组的房源,提供统一查询功能。另外,当有合适的新房源发布后,笔者希望第一时间接到房源上线通知,毕竟好房源大家都抢着要,早一刻联系房东多一点机会租道合适的房子。

先上图,让大家看看效果。大家也可以上www.qianxuzufang.com/wx浏览。每个房源包含以下信息:

标题

发布时间

图片

房源详细描述

原文链接

户型

租金

房东联系方式

查询结果展示

房源详情展示

接下来介绍如何从豆瓣中抓取这些信息。首先需要分析一下豆瓣网页结构,我需要抓取的网页其实就只有两个。第一个是租房小组的房源列表页面。举个例子看这个租房小组:https://www.douban.com/group/279962/, 分析其页面结构,如下图:

上图看到的是在Chrome开发调试模式下打开豆瓣小组的效果,左侧是浏览器中的展示效果, 右侧是HTML源码。这个页面非常整齐,每条房源记录都是<tr class="">开头,</tr>结束。

抓取房源列表

使用parseHouseList函数,我们就能获取一个房源信息的列表,list中每一个元素都是一条房源记录的原始信息, 如下图:

房源信息源码

房源原始信息里面包含:房源标题,链接,发布时间,发贴人信息等。同样的,我们可以用获取房源列表的方法来提取这些信息。

提取房源信息

接下来我们要抓取的就是房源的详细信息页了,其结构如下图:

房源详细信息源码结构

提取房源详细信息

抓取房源详细信息的时候使用html-to-text这个npm包,它可以帮从房源描述信息中去除我们不需要的html标签,把html源码直接转成文本。抓取图片url的方法与之类似,不再累述了。

到目前为止,我们已经能抓取房源标题、发布时间、详细信息、房源链接和图片了。剩下的房租、户型和房东联系方式等信息是无法用上面的方法抓取的。我们需要分析标题和房源详细信息,从中提取一下模式,然后使用正则表达式来抽取这些信息。

提取租金信息

上图是使用正则表达式提取房租信息的代码,使用正则表达式的关键是要学习提取模式。同样的可以用下面的正则表达式提取联系方式、户型等信息。

const phoneNumberPatt=/((手机|电话)(:|:|\s)?(\s)?(1[3|5|7|8|][0-9]{8}))/;

const snsPatt=/((微信|qq|QQ)号?(:|:|\s)?(\s)?([\d\w_一二两三四五六七八九零]{5,}))/;

const areaPatt=/(\d{1,3})(多)?[平|㎡]/;

const modelPatt=/(([\d一二两三四五六七八九])[居室房]([123一二两三]厅)?([12一二两]厨)?([1234一二两三四]卫)?([12一二两]厨)?)/;

到目前为止,我们已经能提取所有我们想要的信息了。但实际操作中,我们可能会遇到一些其他问题,需要注意:

出了豆瓣外,我们还可以抓取58同城,赶集网等的个人房源信息,总之越多越好。

如果房源比较多,为了提高抓取效率,可以使用多线程并行抓取。Node.js天生的事件机制非常适合并行抓取。

豆瓣有反爬虫机制,如果我们短时间内请求数目太多的话,会上豆瓣的黑名单,导致无法继续抓取房源。解决办法:

i. 控制Node.js并行抓取的数目

ii. 设定好抓取频率,如每10分钟抓取一次,可以改为每小时抓取一次

iii. 使用多机多ip轮流抓取

同一套房源在多个小组发布时,我们并不希望看到它在查询结果中出现多次,需要聚合这些房源。

如何保存这些房源信息,提高查询效率?

查询结果比较多时,该如何对这些房源进行排序呢?

用户查询‘清华大学’时,可能想看周边的房源,我们是不是能给用户推荐‘五道口’的房源呢? (注:清华大学和五道口离的很近,故清华大学又被称为五道口男子技院)

如何自动识别过滤中介发布的房源?

关于上面这些问题,我将在以后的文章陆续介绍相应的解决办法。请大家多多支持。

最后如果大家想体验或使用上面的租房信息搜索引擎的话,可以关注微信公众号:千寻租房;或访问网站:http://www.qianxuzufang.com/wx

本文链接:https://www.24zzc.com/news/169405349130312.html

相关文章推荐

    无相关信息