利用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基础教程之常用运算符
Aug 29 Python
Python中__call__用法实例
Aug 29 Python
python写入中英文字符串到文件的方法
May 06 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
python+pyqt5实现24点小游戏
Jan 24 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
python字符串下标与切片及使用方法
Feb 13 Python
Keras设置以及获取权重的实现
Jun 19 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
编写python代码实现简单抽奖器
Oct 20 Python
python 多线程中join()的作用
Oct 29 Python
总结几个非常实用的Python库
Jun 26 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
ajax缓存问题解决途径
2006/12/06 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Laravel find in set排序实例
2019/10/09 PHP
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
mac使用python识别图形验证码功能
2020/01/10 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
Exception类的常用方法
2012/06/16 面试题
法律进企业活动方案
2014/03/04 职场文书
篝火晚会主持词
2014/03/25 职场文书
会计学自荐信
2014/06/03 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
地理科学专业自荐信
2014/09/01 职场文书
工作收入住址证明
2014/10/28 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
python实现简单倒计时功能
2021/04/21 Python