利用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 相关文章推荐
Python3使用requests包抓取并保存网页源码的方法
Mar 15 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
python实现斐波那契数列的方法示例
Jan 12 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Django rest framework工具包简单用法示例
Jul 20 Python
python 提取key 为中文的json 串方法
Dec 31 Python
python+opencv边缘提取与各函数参数解析
Mar 09 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
python爬取抖音视频的实例分析
Jan 19 Python
Pandas-DataFrame知识点汇总
Mar 16 Python
python套接字socket通信
Apr 01 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
2006/10/09 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JavaScript Chart 插件整理
2010/06/18 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
浅谈Angular2 模块懒加载的方法
2017/10/04 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
JavaScript中arguments的使用方法详解
2020/12/20 Javascript
python的类变量和成员变量用法实例教程
2014/08/25 Python
python生成随机图形验证码详解
2017/11/08 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
python接口自动化框架实战
2020/12/23 Python
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
理工类毕业自我鉴定
2014/02/20 职场文书
环保志愿者活动方案
2014/08/14 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers