.Net 5分钟搞定网页实时监控
一、为什么会用到网页实时监控
LZ最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地。买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要商品房备案,简单点说就是你买房时可以在政府商品房备案网站处查看你购买房的备案情况,如果是已经备案了开发商还在卖这套房子,那肯定就是一房多卖了。而且很重要一点就是,只有备过案,才能进行下一步银行贷款,在目前银行利息越来越高的情况下,肯定是越早备案越早贷款越有利,所以以最快速度知道自己购买房子的备案情况尤为重要。
当然也可以每天到网站查询自己的备案情况,显然这不是程序员的做法,更不是.Net程序员的做法。程序员的做法肯定是备案一旦下来,程序老老实实的通知到手机上。顺便吐槽一点,查询备案的网站真慢。
二、选择windows服务、窗体(winform)、web还是控制台程序?
当然最合适的肯定是windows服务,winform和web肯定也可以的,控制台程序不一定是最合适的,但肯定开发是最快速的。综合考虑了一下,因为是一个很小的监控项目而且只会用一两个月,或者一两天,所以没变要搞那么复杂,而且windows服务还要安装到服务器,最重要的是控制台是最快开发和最容易部署的,所以最终选择了控制台程序。
三、分析需求
1、需要每隔几分钟查询一次备案情况,所以需要System.Timers.Timer。当然如果是非常健壮的或者是完整的项目,建议用Quartz.NET,当然可以选择Topshelf、Hangfire、FluentScheduler等等。
2、因为需要查询网站的备案情况,获取备案网页的html,然后判断html中是否含有“待售”字样即可,如果没有就说明已经备案了。 这时需要System.Net.WebClient。查询网站.net下就更多了,最基础的就是HttpWebRequst,HttpClient,或者用RestSharp,都是不错的选择。
3、因为需要实时通知情况,所以选择了阿里云的短信通知,因为其他项目用到,所以直接复制代码来用。当然也有很多通知,比如邮件,app,等等。当然我们没必要搞那么复杂。
四、代码模块
直接代码,逻辑和代码很简单。
class Program
{
static System.Timers.Timer timer = null; static void Main(string[] args)
{
timer = new System.Timers.Timer( * * );
timer.Elapsed += Timer_Elapsed; ;
timer.Start();
Console.ReadKey();
} private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
WebClient client = new WebClient
{
Encoding = System.Text.Encoding.GetEncoding("utf-8")
}; var html = client.DownloadString("http://www.xxxx.com/xxxxx.html");
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "......" + "未签。");
if (html.IndexOf("待售") == -)
{
if (timer != null)
timer.Stop(); // 发送5条短信
for (int i = ; i < ; i++)
{
// 发送短信
SmsMessage.Send("152****7178", "SMS_92310001", new { name = "Emrys", status = "恭喜恭喜恭喜,房子已签售!" });
Thread.Sleep( * );
} }
}
}
五、部署
好吧,这项没啥以及意义,直接生成代码,在bin目录拷贝Debug文件夹直接扔到服务器,点击运行xxxxxxx.exe。部署完毕。^_^

六、总结
1、虽然当时只是突发奇想,并没有具体统计时间,拿起vs就是一顿突突。所有代码和部署应该不会超过5分钟。 从这可以看出.Net在vs配合下在一些方面做的还是不错的。
2、现在.Net core开源跨平台以及运行速度,C#“优美的语言”,vs宇宙第一IDE,其他不多说,望.Net越来越好。^_^
.Net 5分钟搞定网页实时监控的更多相关文章
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...
- zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》
本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图 zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...
- windows+mysql集群搭建-三分钟搞定集群
注:本文来源: 陈晓婵 < windows+mysql集群搭建-三分钟搞定集群 > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...
- 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)
原文:30分钟搞定后台登录界面(103个后台PSD源文件.素材网站) 目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为 ...
- 一分钟搞定AlloyTouch图片轮播
一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...
- 五分钟搞定Go.js
五分钟搞定Go.js 1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...
- Spring Boot 返回 XML 数据,一分钟搞定!
Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...
- zookeeper核心-zab协议-《每日五分钟搞定大数据》
上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...
- 十分钟搞定pandas内容
目录 十分钟搞定pandas 一.创建对象 二.查看数据 三.选择器 十二.导入和保存数据 参考:http://pandas.pydata.org/pandas-docs/stable/whatsne ...
随机推荐
- linux数据库备份脚本
数据库备份1.创建个备份存储目录mkdir /root/backup/2.以下内容写到dbbackup.sh(注意,使用VIM 或者VI命令新建文件,不要在WINDOWS下新建,否则可能提示 No s ...
- (原创)遗传算法C++实现
本文没有对遗传算法的原理做过多的解释 基础知识可以参考下面的博客:http://blog.csdn.net/u010451580/article/details/51178225 本实验用到的变异用到 ...
- 如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享
如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享 实现环境:VMware workstations.RHEL7.0 第一步:配置网卡IP及yum软件仓库 命令:vim ...
- 初识Java网络编程
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作.Socket ...
- (转)从史上八大MySQL宕机事故中学到的经验
一.Percona网站宕机事件 震级:3 发生时长:2011年7月11日 持续时长:数日 地点:加州Pleasanton(幸福屯) 宕机原因:Percona网站主服务器上的3块硬盘损坏,同时因为人员变 ...
- 使用 Rust 构建分布式 Key-Value Store
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 引子 构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,首先就是我们的系统到底需要提供什么样的功能 ...
- Cordic算法——verilog实现
上两篇博文Cordic算法--圆周系统之旋转模式.Cordic算法--圆周系统之向量模式做了理论分析和实现,但是所用到的变量依然是浮点型,而cordic真正的用处是基于FPGA等只能处理定点的平台.只 ...
- 赢在面试之Java泛型篇(十二)
139. Java中的泛型是什么 ? 使用泛型的好处是什么? 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 好处: 1.类型安全,提供编译期 ...
- 优雅的使用Chrome调试Node程序
前言 我不知道大家用什么来调试node程序.可能有的人用node-inspect,但是这货很久没更新了,而且一堆的bug用起来很不爽:可能有的人用命令行来,但是这样操作不够灵活:还有人只用consol ...
- static,final,包,访问修饰符,内部类
static 关键字可以修饰成员变量,被static修饰的成员变量归属于类static关键字可以修饰成员方法:被static修饰的成员方法可以直接使用类名调用,也可以通过对象调用,建议使用类名.非静态 ...