利用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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
详解Python中break语句的用法
May 14 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Android分包MultiDex策略详解
Oct 30 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python实现线性判别分析(LDA)的MATLAB方式
Dec 09 Python
Python @property原理解析和用法实例
Feb 11 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
Python合并pdf文件的工具
Jul 01 Python
Django框架之路由用法
Jun 10 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
学习PHP session的传递方式
2016/06/15 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
jquery 图片轮换效果
2010/07/29 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
详解vue组件基础
2018/05/04 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Python验证码截取识别代码实例
2020/05/16 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
abstract是什么意思
2012/02/12 面试题
周年庆典邀请函范文
2014/01/23 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书