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

 更新时间:2019年03月10日 10:50:55   作者:facert  
这篇文章主要给大家介绍了关于如何利用Python实现微信找房机器人的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

目的

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

当时因为代码比较简单一直没开源,现在想想说不定开源后也能帮助一些同学更好的找到租房信息,所以简单整理后,开源到 github,地址:https://github.com/facert/zufang (本地下载)

下面是当时写的简单原理介绍:

身在帝都的人都知道租房的困难,每次找房都是心力交瘁。其中豆瓣租房小组算是比较靠谱的房源了,但是由于小组信息繁杂,而且没有搜索的功能,想要实时获取租房信息是件很困难的事情,所以最近给自己挖了个坑,做个微信找房机器人,先看大概效果吧,见下图:

实现

说下大概的技术实现吧,首先是 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实现一个春节倒计时脚本

    春节即将到来,本文将为大家介绍一个通过Python实现的春节倒计时脚本,文中的示例代码简洁易懂,感兴趣的小伙伴可以自己动手尝试一下
    2022-01-01
  • python模拟登录百度代码分享(获取百度贴吧等级)

    python模拟登录百度代码分享(获取百度贴吧等级)

    python模拟登录百度,实现了登录并读取百度关注贴吧列表,百度登录还是有点麻烦的,由于用的ssl,所以要先获取token,然后再登录,这个用finddle2分析下,还是比较好解决的
    2013-12-12
  • Python如何批量更改图像尺寸统一大小

    Python如何批量更改图像尺寸统一大小

    这篇文章主要介绍了Python如何批量更改图像尺寸统一大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • python斐波那契数列的计算方法

    python斐波那契数列的计算方法

    这篇文章主要为大家详细介绍了python斐波那契数列的计算方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python实现大数据收集至excel的思路详解

    Python实现大数据收集至excel的思路详解

    这篇文章主要介绍了Python实现大数据收集至excel的思路,本文通过完整代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • python中的 zip函数详解及用法举例

    python中的 zip函数详解及用法举例

    zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。这篇文章主要介绍了python中的 zip函数详解及用法举例,需要的朋友可以参考下
    2020-02-02
  • Python Selenium异常处理的实例分析

    Python Selenium异常处理的实例分析

    在本篇内容里小编给大家分享了关于Python Selenium异常处理的实例分析内容,对此有兴趣的朋友们可以学习参考下。
    2021-02-02
  • Python中的NumPy实用函数整理之percentile详解

    Python中的NumPy实用函数整理之percentile详解

    这篇文章主要介绍了Python中的NumPy实用函数整理之percentile详解,NumPy函数percentile()用于计算指定维度上数组元素的第 n 个百分位数,返回值为标量或者数组,需要的朋友可以参考下
    2023-09-09
  • python导入时小括号大作用

    python导入时小括号大作用

    这篇文章主要介绍了python导入时小括号的大作用,非常的简单实用,希望这个小技巧能够帮到大家
    2017-01-01
  • 详解Python正则表达式re模块

    详解Python正则表达式re模块

    这篇文章主要介绍了Python正则表达式re模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论