您的位置:首页 > 移动开发 > 微信开发

自己写的一个抓取页面email地址的小程序

2013-01-17 16:19 337 查看
媳妇的工作需要群发邮件,见她一个一个的复制粘贴,有些不忍,编写了一个邮箱批量抓取的小程序,对她的工作有些小帮助。

抓取页面的emal地址,只需要两个步骤,1,通过url地址抓取页面信息,2,从页面信息中提取emal地址。下面奉上代码;

public static string GetHtml(string url)
{
string html = "";
try
{
WebClient MyWebClient = new WebClient();

Encoding utf8 = Encoding.UTF8;

Encoding defaultCode = Encoding.Default;

MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。

Byte[] pageData = MyWebClient.DownloadData(url);//从指定网站下载数据
string pageHtml = Encoding.Default.GetString(pageData);
string Encodeing = getEncoding(pageHtml);
if (Encodeing != "GB2312" && Encodeing != "GBK")
{
byte[] defaultBytes = Encoding.Convert(utf8, defaultCode, pageData);
pageHtml = Encoding.Default.GetString(defaultBytes);  //如果获取网站页面采用的是GB2312,则使用这句
}

html = pageHtml;
}
catch (WebException webEx)
{
Console.WriteLine(webEx.Message.ToString());
}
return html;
}


public static string getEncoding(string html)
{
Match match = Regex.Match(html, "charset=(?'ecncoding'.*[\\d|k|K])\"");
GroupCollection groups = match.Groups;
string ecncoding = groups["ecncoding"].Value;
return ecncoding.ToUpper();
}

protected void btnOk_Click(object sender, EventArgs e)
{
lstEmails.Items.Clear();
string html = GetHtml(this.txturl.Text.Trim());
string reg = @"[a-zA-Z0-9_\-\.]+@\w+(\.\w+)+";//匹配Email的正则表达式
MatchCollection matchs = Regex.Matches(html, reg);foreach (Match ms in matchs)
{
txtEmails.Items.Add(new ListItem(ms.Value+",\r\n"));
}
}


GetHtml()方法用来抓取页面信息。getEncoding()获取页面编码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐