随着访问量的不断增多,给自己的写,转,翻的动力也增加了很多。那么数字对我来说就很重要,那么怎么样去监测每天的的访问量这是我目前需要考虑的问题。突然想到之前通过网页抓取表标签的例子,刚好可以拉过来修改一下直接使用。
Step1:在中每个用户都有自己的主页的地址(http://blog.csdn.net/younghaiqing),通过主页地址可以直接访问看到左侧导航的用户访问量。将页面通过HttpWebResponse请求将数据存放在StreamReader中。
string url
= "http://blog.csdn.net/younghaiqing";
var request
= (HttpWebRequest)WebRequest
.Create(url);
var response
= (HttpWebResponse)request
.GetResponse();
Stream stream
= response
.GetResponseStream();
StreamReader sr
= new StreamReader(stream);
string content
= sr
.ReadToEnd();
HashSet
<string> syncsInfo
= new HashSet
<string>();
syncsInfo
.Add(
list);
SendSyscsMail(syncsInfo);
Step2:放入StreamReader中的数据时HTML文件不能直接使用,数据也不是我需要的,那么通过查看元素得知。
<ul id="blog_rank">
<li>访问:
<span>7340次
</span></li>
<li>积分:
<span>1029
</span> </li>
.......
<li>排名:
<span>千里之外
</span></li>
</ul>
step3:是唯一的,那么我可以使用正则表达式,先将< ul id=”blog_rank”>元素给取出来,在经过一次正则表达式将里面的标签全部替换掉。
public static List<
string>
GetHtmlTextList(
string sHtmlText)
{
Regex regText =
new Regex(
@"<ul\s+id\=\""blog_rank\"">([\S\s]*?)</ul>", RegexOptions.IgnoreCase);
MatchCollection matches = regText.Matches(sHtmlText);
List<
string> sUrlList =
new List<
string>();
foreach (Match match
in matches)
{
sUrlList.Add(replceHtml(match.Value));
}
return sUrlList;
}
public static string replceHtml(
string strHtml)
{
Regex objRegExp =
new Regex(
"<(.|\n)+?>");
return objRegExp.Replace(strHtml,
"");
}
数据取好以后,那么我的数据保存在哪里?这是一很大的问题,还好公司有发邮件的功能,那么就让他每天定时给我发邮件。
private static bool SendSyscsMail(HashSet<
string> syncsFail)
{
bool flag =
false;
if (syncsFail !=
null && syncsFail.Count >
0)
{
StringBuilder sb =
new StringBuilder()
.Append(
"<body style=\"margin: 10px; font-size: 12pt;\">")
.Append(
" <div>您好:</div>")
.Append(
" <div style=\"text-indent: 2em;\"Young用户量访问同步</div>")
.Append(
" <div style=\"margin-left: 2em;\">");
foreach (
string temp
in syncsFail)
{
sb.AppendFormat(
"{0} <br/>", temp);
}
sb.Append(
" </div>");
try
{
EMail email =
new EMail(
"mossadmin@hitechsemi.com",
ConfigurationManager.AppSettings[
"MonitorPerson"],
null,
"用户量访问同步",
sb.ToString(),
null);
email.Send();
flag =
true;
}
catch (Exception)
{
flag =
false;
}
}
return flag;
}
EMail为一个邮件的新类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.IO;
using System.Net.Mime;
using System.Configuration;
namespace ConsoleApplication1
{
public class EMail
{
private MailMessage mMailMessage;
private SmtpClient mSmtpClient;
private int mSenderPort =
25;
private string mSenderServerHost = ConfigurationManager.AppSettings[
"eMailServer"];
private string mSenderUsername = ConfigurationManager.AppSettings[
"eMailSenderUsername"];
private string mSenderPassword = ConfigurationManager.AppSettings[
"eMailSenderPassword"];
private bool mEnableSsl =
false;
private bool mEnablePwdAuthentication =
true;
public EMail(
string fromMail,
string toMail,
string CCMail,
string emailSubject,
string emailBody,
string emailAnnex)
{
try
{
mMailMessage =
new MailMessage();
string[] tempTo = toMail.Split(
';');
if (tempTo.Length >
0)
{
for (
int i =
0; i < tempTo.Length; i++)
{
if (!
string.IsNullOrEmpty(tempTo[i]))
{
mMailMessage.To.Add(tempTo[i]);
}
}
}
if (!
string.IsNullOrEmpty(CCMail))
{
string[] tempCC = CCMail.Split(
';');
if (tempCC.Length >
0)
{
for (
int i =
0; i < tempCC.Length; i++)
{
if (!
string.IsNullOrEmpty(tempCC[i]))
{
mMailMessage.CC.Add(tempCC[i]);
}
}
}
}
mMailMessage.From =
new MailAddress(fromMail);
mMailMessage.Subject = emailSubject;
mMailMessage.Body = emailBody;
mMailMessage.IsBodyHtml =
true;
mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
mMailMessage.Priority = MailPriority.Normal;
if (!
string.IsNullOrEmpty(emailAnnex) && File.Exists(emailAnnex))
{
Attachment attach =
new Attachment(emailAnnex);
ContentDisposition disposition = attach.ContentDisposition;
disposition.CreationDate = File.GetCreationTime(emailAnnex);
disposition.ModificationDate = File.GetLastWriteTime(emailAnnex);
disposition.ReadDate = File.GetLastAccessTime(emailAnnex);
mMailMessage.Attachments.Add(attach);
}
}
catch (Exception e)
{
throw e;
}
}
public void Send()
{
try
{
if (mMailMessage !=
null)
{
mSmtpClient =
new SmtpClient();
mSmtpClient.Host =
this.mSenderServerHost;
mSmtpClient.Port =
this.mSenderPort;
mSmtpClient.UseDefaultCredentials =
false;
mSmtpClient.EnableSsl =
this.mEnableSsl;
if (
this.mEnablePwdAuthentication)
{
System.Net.NetworkCredential nc =
new System.Net.NetworkCredential(
this.mSenderUsername,
this.mSenderPassword);
mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port,
"NTLM");
}
else
{
mSmtpClient.Credentials =
new System.Net.NetworkCredential(
this.mSenderUsername,
this.mSenderPassword);
}
mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
mSmtpClient.Send(mMailMessage);
}
}
catch (Exception e)
{
throw e;
}
}
}
}
还有一些数据在web.config中配置,如:邮件地址,邮件登录名,密码,收件人
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="eMailServer" value="172.127.13.154"/>
<add key="eMailSenderUsername" value="小明"/>
<add key="eMailSenderPassword" value="123"/>
<add key="MonitorPerson" value="haiqing.yang@xx.com"/>
</appSettings>
</configuration>
运行结果如下:
转载请注明原文地址: https://ju.6miu.com/read-3095.html