利用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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
python [:3] 实现提取数组中的数
Nov 27 Python
django 实现简单的插入视频
Apr 07 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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
咖啡的植物学知识
2021/03/03 咖啡文化
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
详解JavaScript的变量和数据类型
2015/11/27 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python中模块string.py详解
2017/03/12 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python生成器推导式用法简单示例
2019/10/08 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
秋季运动会广播稿大全
2014/02/17 职场文书
《春雨》教学反思
2014/04/24 职场文书
高三学生评语大全
2014/04/25 职场文书
公司年会策划方案
2014/05/17 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
闪闪红星观后感
2015/06/08 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
Python类方法总结讲解
2021/07/26 Python