大三学妹要我帮她找好一点便宜的房子!Python自动监测房源状态!

大三学妹要我帮她找好一点便宜的房子!Python自动监测房源状态!,第1张

概述 1.基本思路自如有很多房源都是处在“配置中”状态,这时候是可以预约看房但是不能租房的,这里要解决的主要问题就是,当房源从“配置中”的状态变更的时候,推送微信消息提醒。

1.基本思路

自如有很多房源都是处在“配置中”状态,这时候是可以预约看房但是不能租房的,这里要解决的主要问题就是,当房源从“配置中”的状态变更的时候,推送微信消息提醒。

进群:548377875   即可获取数十套pdf哦!

3.如何获取房源状态

我们随便找一个处在配置中状态的自如房源,通过开发人员工具(可直接按F12),可以看到以下内容:

4.如何发送微信消息

itchat.login()执行该语句,会d出一张图片二维码,使用手机扫码即可登录网页版微信。我们定义以下函数用来向指定好友发送微信消息:

# 给指定好友发送指定内容的消息

def Sendamassage(frIEnd,message):

users = itchat.search_frIEnds(name=frIEnd)

username = users[0]['Username']

itchat.send(message,toUsername = username)

6.2 定义功能函数

定义几个函数,用来实现不同的功能:

# 使用手机扫描二维码登录微信

def WeChatLogin():

itchat.login()

# 给指定好友发送指定内容的消息

def Sendamassage(frIEnd,toUsername = username)

# 网页请求

def WebPageRequest(url,header):

string = requests.get(url,headers=header).text

return string

# 正则匹配

def RegularMatch(pattern,string):

pattern=re.compile(pattern)

result=re.search(pattern,string)

return result

# 当前时间(字符串)

def CurrentTime():

curtime = time.strftime("%Y-%m-%d %H:%M:%s",time.localtime())

return curtime

6.3 主要执行过程

整体逻辑结构如下:

while True:

try:

...

if url == []: # while循环停止条件

break

...

except:

...

continue # 错误重试

(2)部分固定参数值设置

设置一些参数值:

# 可在浏览器搜索框中输入about:version获得

header={'User-Agent': 'Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/55.0.2883.87 Safari/537.36 QIHU 360SE'}

# 正则匹配模式设置

pattern=r'title="配置中"'

house_info_pattern = r'data-title="(.*)" data-lng'

# 指定微信消息推送好友

frIEnd='君以沫'

(又不小心暴露了很多了不得的事情)

需要注意的是,当房源状态未能匹配到配置中的时候,即已经变为可预订的时候,num会重置为0,这是因为在重置语句的上面,执行了url.pop()的 *** 作,列表长度变更,避免继续使用num原值导致的列表索引溢出的错误(例如当length=4,num=3的时候,urld出一个元素后,长度变为3,这时候url[3]就会报错)。

当然,重置为0会有一个小问题,即对房源的监测会重新开始(从列表第一个房源开始),后面没有监测的房源会重新排队等待监测,不过,每一个房源都会被监测的,而且由于url的长度不会很大,排队的时间不会很久。

message是构造的微信信息内容,主要包含当前时间,房源名称,当前房源状态等信息。

(7)发送程序运行状态

因为要实现不间断的实时监测,就需要程序一直在运行,有时候人不在电脑前了,就不知道程序执行结果如何了。通过定时发送微信信息,提示程序执行状态。

(8)程序休息

有时候频繁请求网页,可能会因为网络延迟等原因报错,或者会被网址封掉,让程序间隔几秒的休息是必要的。

# 休息5秒

time.sleep(5)

(9)意外重连

如果程序执行出错,则让程序休息几秒后重试。

# 意外重连

except:

print('连接断开,重新连接...')

time.sleep(3)

continue

7.结果分析

今天测试的时候,在晚饭的时候成功推送一条消息,提示房源从配置中状态变更,然后火速登录app查看房源状态,果然,房源从配置中变更为可签约倒计时,印象中是倒计时在58分多一些,我不清楚自如的倒计时是不是从1小时开始的。但我猜测是,从监测到状态变更,加上中间看微信消息、登录app,差不多一分多钟的时间。

接收到的微信推送消息如下图:

在上图中也可以看到整点推送的微信消息提醒。

吃完饭回来,赶紧定好闹钟,坐等开抢。已被管家提前告知,较多人在关注该房源,内心竟然还有那么一点小激动。(~ ̄▽ ̄)~

下面是Python窗口打印的消息记录:

有了自动程序的帮助,终于,在晚上7:16分左右的时候开抢,我成功的…失败了...

所以,我还是没有给学妹租到房!没有租到!!没有!!!∑(゚Д゚ノ)ノ

回家洗洗睡吧

总结

以上是内存溢出为你收集整理的大三学妹要我帮她找好一点便宜的房子!Python自动监测房源状态!全部内容,希望文章能够帮你解决大三学妹要我帮她找好一点便宜的房子!Python自动监测房源状态!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1208826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存