利用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中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
浅谈python字符串方法的简单使用
Jul 18 Python
轻松理解Python 中的 descriptor
Sep 15 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
python 如何将office文件转换为PDF
Sep 22 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 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实现阳历到农历转换的类实例
2015/03/07 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
vue强制刷新组件的方法示例
2019/02/28 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
在vue中把含有html标签转为html渲染页面的实例
2019/10/28 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Linux下多个Python版本安装教程
2018/08/15 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python使用minimax算法实现五子棋
2019/07/29 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
岗位职责定义及内容
2013/11/08 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
python实现简单的井字棋
2021/05/26 Python
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android