利用Python实现微信找房机器人实例教程


Posted in Python onMarch 10, 2019

目的

两年前曾为了租房做过一个找房机器人 「爬取豆瓣租房并定时推送到微信」,维护一段时间后就荒废了。

当时因为代码比较简单一直没开源,现在想想说不定开源后也能帮助一些同学更好的找到租房信息,所以简单整理后,开源到 github,地址:https://github.com/facert/zufang (本地下载)

下面是当时写的简单原理介绍:

身在帝都的人都知道租房的困难,每次找房都是心力交瘁。其中豆瓣租房小组算是比较靠谱的房源了,但是由于小组信息繁杂,而且没有搜索的功能,想要实时获取租房信息是件很困难的事情,所以最近给自己挖了个坑,做个微信找房机器人,先看大概效果吧,见下图:

利用Python实现微信找房机器人实例教程

利用Python实现微信找房机器人实例教程

实现

说下大概的技术实现吧,首先是 scrapy 爬虫对于豆瓣北京租房的小组实时爬取,并做了全文检索,对 title, description 使用 jieba 和 whoosh 进行了分词和索引,做成 api。接下来就是应用的接入,网上有微信机器人的开源 [wxBot](http://github.com/liuwons/wxBo),所以对它进行了修改, 实现了定时推送和持久化。最后顺便把公众号也做了同样的功能,支持实时租房信息搜索。

部分代码

scrapy 支持自定义 pipeline,能很方便的实现数据录入的时候实时生成索引,见 code:

class IndexPipeline(object):

 def __init__(self, index):
 self.index = index

 @classmethod
 def from_crawler(cls, crawler):
 return cls(
  index=crawler.settings.get('WHOOSH_INDEX', 'indexes')
 )

 def process_item(self, item, spider):
 self.writer = AsyncWriter(get_index(self.index, zufang_schema))
 create_time = datetime.datetime.strptime(item['create_time'], "%Y-%m-%d %H:%M:%S")
 self.writer.update_document(
  url=item['url'].decode('utf-8'),
  title=item['title'],
  description=item['description'],
  create_time=create_time
 )
 self.writer.commit()
 return item

搜索 api 代码很简单:

def zufang_query(keywords, limit=100):
 ix = get_index('indexes', zufang_schema)
 content = ["title", "description"]
 query = MultifieldParser(content, ix.schema).parse(keywords)
 result_list = []
 with ix.searcher() as searcher:
 results = searcher.search(query, sortedby="create_time", reverse=True, limit=limit)
 for i in results:
  result_list.append({'url': i['url'], 'title': i['title'], 'create_time': i['create_time']})
 return result_list

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
总结Python编程中函数的使用要点
Mar 20 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Django REST Framework之频率限制的使用
Sep 29 Python
python实现俄罗斯方块小游戏
Apr 24 Python
详解python中groupby函数通俗易懂
May 14 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Scrapy实现模拟登录的示例代码
Feb 21 Python
PyTorch的Debug指南
May 07 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
谈谈Python中的while循环语句
Mar 10 #Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 #Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 #Python
浅谈python的深浅拷贝以及fromkeys的用法
Mar 08 #Python
Python高级特性与几种函数的讲解
Mar 08 #Python
Python I/O与进程的详细讲解
Mar 08 #Python
举例讲解Python常用模块
Mar 08 #Python
You might like
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php实现可逆加密的方法
2015/08/11 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
PHP Include文件实例讲解
2019/02/15 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
python2 对excel表格操作完整示例
2020/02/23 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
小结Python的反射机制
2020/09/28 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
写好自荐信的几个要点
2013/12/26 职场文书
歌唱比赛主持词
2014/03/18 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android