利用Python實(shí)現(xiàn)微信找房機(jī)器人實(shí)例教程
目的
兩年前曾為了租房做過(guò)一個(gè)找房機(jī)器人 「爬取豆瓣租房并定時(shí)推送到微信」,維護(hù)一段時(shí)間后就荒廢了。
當(dāng)時(shí)因?yàn)榇a比較簡(jiǎn)單一直沒(méi)開(kāi)源,現(xiàn)在想想說(shuō)不定開(kāi)源后也能幫助一些同學(xué)更好的找到租房信息,所以簡(jiǎn)單整理后,開(kāi)源到 github,地址:https://github.com/facert/zufang (本地下載)
下面是當(dāng)時(shí)寫(xiě)的簡(jiǎn)單原理介紹:
身在帝都的人都知道租房的困難,每次找房都是心力交瘁。其中豆瓣租房小組算是比較靠譜的房源了,但是由于小組信息繁雜,而且沒(méi)有搜索的功能,想要實(shí)時(shí)獲取租房信息是件很困難的事情,所以最近給自己挖了個(gè)坑,做個(gè)微信找房機(jī)器人,先看大概效果吧,見(jiàn)下圖:


實(shí)現(xiàn)
說(shuō)下大概的技術(shù)實(shí)現(xiàn)吧,首先是 scrapy 爬蟲(chóng)對(duì)于豆瓣北京租房的小組實(shí)時(shí)爬取,并做了全文檢索,對(duì) title, description 使用 jieba 和 whoosh 進(jìn)行了分詞和索引,做成 api。接下來(lái)就是應(yīng)用的接入,網(wǎng)上有微信機(jī)器人的開(kāi)源 [wxBot](http://github.com/liuwons/wxBo),所以對(duì)它進(jìn)行了修改, 實(shí)現(xiàn)了定時(shí)推送和持久化。最后順便把公眾號(hào)也做了同樣的功能,支持實(shí)時(shí)租房信息搜索。
部分代碼
scrapy 支持自定義 pipeline,能很方便的實(shí)現(xiàn)數(shù)據(jù)錄入的時(shí)候?qū)崟r(shí)生成索引,見(jiàn) 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 代碼很簡(jiǎn)單:
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
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- itchat-python搭建微信機(jī)器人(附示例)
- python實(shí)現(xiàn)微信機(jī)器人: 登錄微信、消息接收、自動(dòng)回復(fù)功能
- 手把手教你使用Python創(chuàng)建微信機(jī)器人
- python微信聊天機(jī)器人改進(jìn)版(定時(shí)或觸發(fā)抓取天氣預(yù)報(bào)、勵(lì)志語(yǔ)錄等,向好友推送)
- python實(shí)現(xiàn)向微信用戶(hù)發(fā)送每日一句 python實(shí)現(xiàn)微信聊天機(jī)器人
- 詳解用python自制微信機(jī)器人,定時(shí)發(fā)送天氣預(yù)報(bào)
- 教你用Python創(chuàng)建微信聊天機(jī)器人
- python使用itchat庫(kù)實(shí)現(xiàn)微信機(jī)器人(好友聊天、群聊天)
- 快速實(shí)現(xiàn)基于Python的微信聊天機(jī)器人示例代碼
- python基于itchat實(shí)現(xiàn)微信群消息同步機(jī)器人
- 使用python接入微信聊天機(jī)器人
相關(guān)文章
基于Python實(shí)現(xiàn)一個(gè)春節(jié)倒計(jì)時(shí)腳本
春節(jié)即將到來(lái),本文將為大家介紹一個(gè)通過(guò)Python實(shí)現(xiàn)的春節(jié)倒計(jì)時(shí)腳本,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以自己動(dòng)手嘗試一下2022-01-01
python模擬登錄百度代碼分享(獲取百度貼吧等級(jí))
python模擬登錄百度,實(shí)現(xiàn)了登錄并讀取百度關(guān)注貼吧列表,百度登錄還是有點(diǎn)麻煩的,由于用的ssl,所以要先獲取token,然后再登錄,這個(gè)用finddle2分析下,還是比較好解決的2013-12-12
Python實(shí)現(xiàn)大數(shù)據(jù)收集至excel的思路詳解
這篇文章主要介紹了Python實(shí)現(xiàn)大數(shù)據(jù)收集至excel的思路,本文通過(guò)完整代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Python中的NumPy實(shí)用函數(shù)整理之percentile詳解
這篇文章主要介紹了Python中的NumPy實(shí)用函數(shù)整理之percentile詳解,NumPy函數(shù)percentile()用于計(jì)算指定維度上數(shù)組元素的第?n?個(gè)百分位數(shù),返回值為標(biāo)量或者數(shù)組,需要的朋友可以參考下2023-09-09
python導(dǎo)入時(shí)小括號(hào)大作用
這篇文章主要介紹了python導(dǎo)入時(shí)小括號(hào)的大作用,非常的簡(jiǎn)單實(shí)用,希望這個(gè)小技巧能夠幫到大家2017-01-01

