利用Python实现微信找房机器人实例教程

作者:facert 时间:2022-12-09 09:12:27 

目的

两年前曾为了租房做过一个找房机器人 「爬取豆瓣租房并定时推送到微信」,维护一段时间后就荒废了。

当时因为代码比较简单一直没开源,现在想想说不定开源后也能帮助一些同学更好的找到租房信息,所以简单整理后,开源到 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

来源:https://zhuanlan.zhihu.com/p/58791190

标签:python,微信,机器人
0
投稿

猜你喜欢

  • Navicat配置mysql数据库用户权限问题

    2024-01-24 13:06:21
  • 利用bootstrapValidator验证UEditor

    2024-04-16 08:47:26
  • 一个拖动层和Onmouse自动下拉效果

    2007-10-08 21:25:00
  • python 创建一个空dataframe 然后添加行数据的实例

    2022-05-08 01:51:59
  • 在Recordset对象中查询记录的方法

    2008-11-20 16:51:00
  • pytorch关于Tensor的数据类型说明

    2023-08-22 20:39:27
  • 基于python requests selenium爬取excel vba过程解析

    2021-06-18 23:47:09
  • PyCharm Community安装与配置的详细教程

    2022-05-03 18:20:40
  • mysql 5.7.9 免安装版配置方法图文教程

    2024-01-27 06:26:56
  • 一篇文章弄懂Python关键字、标识符和变量

    2022-11-01 17:44:42
  • Rel与CSS的联合使用

    2010-02-20 13:03:00
  • golang之数组切片的具体用法

    2024-04-29 13:06:43
  • Python实现约瑟夫环问题的方法

    2021-09-07 19:41:28
  • 利用JavaScript实现简单的网页时钟

    2024-04-23 09:29:39
  • 跟我学习javascript的基本类型和引用类型

    2024-04-28 09:46:42
  • sqlserver 复制表 复制数据库存储过程的方法

    2024-01-21 17:01:00
  • Python实现简单的可逆加密程序实例

    2022-12-18 10:39:56
  • sql如何实现复合查询?

    2010-05-19 21:25:00
  • 如何快捷地实现分页显示功能?

    2010-01-01 15:08:00
  • MySQL两种表存储结构性能比较测试过程

    2007-12-09 12:45:00
  • asp之家 网络编程 m.aspxhome.com