using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.Net; using System.Text.RegularExpressions; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public String GetWebContent(String url, Encoding encode)// encode 编码 { url = textbiaoti.Text.Trim(); //需要获取源代码的网页 WebRequest request = WebRequest.Create(url); //WebRequest.Create方法,返回WebRequest的子类HttpWebRequest WebResponse response = request.GetResponse(); //WebRequest.GetResponse方法,返回对 Internet 请求的响应 Stream resStream = response.GetResponseStream(); //WebResponse.GetResponseStream 方法,从 Internet 资源返回数据流。 Encoding enc = Encoding.GetEncoding("utf-8"); // 如果是乱码就改成 utf-8 / GB2312 StreamReader sr = new StreamReader(resStream, enc); //命名空间:System.IO。 StreamReader 类实现一个 TextReader (TextReader类,表示可读取连续字符系列的读取器),使其以一种特定的编码从字节流中读取字符。 ContentHtml.Text = sr.ReadToEnd(); //输出(HTML代码),ContentHtml为Multiline模式的TextBox控件 return ContentHtml.Text; } private void button1_Click(object sender, EventArgs e) { try { string x = GetWebContent(textbiaoti.Text, Encoding.UTF8); ContentHtml.Text = ""; Regex r = new Regex(@"/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/");//正则 System.Text.RegularExpressions.MatchCollection mc = r.Matches(x);//表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合。System.Text.RegularExpressions 引用命名空间 (x)放的是要搜索匹配项的字符串 //该集合为不可变(只读)的,并且没有公共构造函数。 Regex.Matches 方法返回 MatchCollection 对象。 //集合中包含零个或多个 System.Text.RegularExpressions.Match 对象。 //如果匹配成功,则将使用在输入字符串中找到的每个匹配对应的一个 System.Text.RegularExpressions.Match 对象来计算集合。 //如果匹配不成功,则集合不包含 System.Text.RegularExpressions.Match 对象,其 Count 属性等于 0。 for (int i = 0; i < mc.Count; i++) { if (mc.Count == 0) { ContentHtml.Text = "未查询到符合邮箱地址的信息。"; } else { ContentHtml.Text += mc[i].Value + "\r\n"; } } } catch (Exception ex) { MessageBox.Show("获取网站信息错误:" + ex.Message); } } private void button2_Click(object sender, EventArgs e) { string x = GetWebContent(textbiaoti.Text, Encoding.UTF8); int a = x.IndexOf("<html>"); int b = x.IndexOf("</html>"); string c = x.Substring(a, b - a+1); ContentHtml.Text = c; ContentHtml.Text = ExtractText(); } public string ExtractText() { string result = ContentHtml.Text; result = RemoveComment(result); //调用去掉注释等方法 result = RemoveScript(result); //调用去除js 方法 result = RemoveStyle(result); //调用去除样式表方法 result = RemoveTags(result); //调用去掉符号方法 return result.Trim(); } //抓取文字方法 public string ExtractText(string strHtml) { string result = strHtml; result = RemoveComment(result); //调用去掉注释等方法 result = RemoveScript(result); //调用去除js 方法 result = RemoveStyle(result); //调用去除样式表方法 result = RemoveTags(result); //调用去掉符号方法 return result.Trim(); } //去除符号方法 private string RemoveComment(string input) { string result = input; result = Regex.Replace(result, @"<!--[^-]*-->", string.Empty, RegexOptions.IgnoreCase); return result; } private string RemoveStyle(string input) { string result = input; //remove all styles result = Regex.Replace(result, @"<style[^>]*?>.*?</style>", string.Empty, RegexOptions.IgnoreCase | RegexOptions.Singleline); return result; } //去掉js方法 private string RemoveScript(string input) { string result = input; result = Regex.Replace(result, @"<script[^>]*?>.*?</script>", string.Empty, RegexOptions.IgnoreCase | RegexOptions.Singleline); return result; } //去掉标点符号方法 private string RemoveTags(string input) { string result = input; result = result.Replace(" ", " "); result = result.Replace("<", "<"); result = result.Replace(">", ">"); result = result.Replace("&", "&"); result = result.Replace("<br>", "\r\n"); result = Regex.Replace(result, @"<[\s\S]*?>", string.Empty, RegexOptions.IgnoreCase); return result; } private void button3_Click(object sender, EventArgs e) { saveFileDialog1.Filter = "文本文件|*.txt"; DialogResult dr = saveFileDialog1.ShowDialog(); if (dr == DialogResult.OK) { string file = saveFileDialog1.FileName; StreamWriter sw = new StreamWriter(file); sw.Write(ContentHtml.Text); sw.Close(); } } } }
时间: 2024-10-04 06:35:40