加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长资讯 > 评论 > 正文

程序员租房妙招

发布时间:2021-05-05 10:06:34 所属栏目:评论 来源:互联网
导读:通过爬虫自己做个检索来找房子,有了这个想法后就试着做一下,首先有一个大概思路: 写一个爬虫程序,尽可能解析出房子相关信息作为字段存储。 将数据存放在 ES(Elasticsearch)中便于查找。 使用 kibana 实现查询和分析,因其作为 ELK 经典组件,在查询分析

通过爬虫自己做个检索来找房子,有了这个想法后就试着做一下,首先有一个大概思路:

  • 写一个爬虫程序,尽可能解析出房子相关信息作为字段存储。
  • 将数据存放在 ES(Elasticsearch)中便于查找。
  • 使用 kibana 实现查询和分析,因其作为 ELK 经典组件,在查询分析上的强大优势不再多言。

需开发的爬虫可分为如下模块:

  • 控制模块:作为起始开关和任务管理
  • 抓取模块:输入一个网址,输出网页内容
  • 解析模块:接收一段内容,输出有价值的字段信息,以及下一页等更多待解析的任务
  • 存储模块:简单的做一个 map 进行运行时去重,然后将信息写入 ES

整个架构和其他爬虫基本一样,但自如为防止爬虫,搜索结果最多显示50页,对应办法就是遍历重要的查询参数,比如城市、地铁站、房子类型等。于是解析模块的顺序大概是:

1. 城市列表解析器,用来解析不同城市(当然这里只需要北京)

2. 地铁站解析器,用来解析出不同的地铁站

3. 房屋列表解析器,用来解析每一页的房屋列表和下一页待解析的任务

4. 房屋详情解析器,用来解析房屋的详细信息,如朝向、面积、户型、楼层、阳台、室友等

这里需要注意几点:

1. 爬虫使用 golang,它本身没有解析库,可以用第三方的 css 样式选择器、xpath,也完全可以用正则搞定,这里主要用正则实现,部分地方试用了下 css 选管有这么个神器,但解析成功率依然不能保证 100%,尤其是在没有训练的情况下,因此就需要像上面代码中那样,在短期内想提高效率就添加部分人工识别的代码,并降低重复工作,也能基本满足需求。

接下来是写入存储,这里为快捷实现,我们用 docker 在本机运行 es 和kibana,如

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读