抓取邮箱及资源

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

抓取邮箱及资源的相关文章

java中使用 正则 抓取邮箱

我们来抓取豆瓣网的邮箱吧!把这个页面的所有邮箱都抓取下来 如https://www.douban.com/group/topic/8845032/: 代码如下: package cn.zhangzong.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnectio

通过WebClient类来发起请求并下载html 抓取邮箱 图片

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Text.RegularExpressions; using System.IO; namespace 通过WebClient类来发起请求并下载html 抓取邮箱 图片 { class Program { static void Main(string[] args

winform网页抓取邮箱单发群发并有附件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; using System.Net.Mail; using System.Net; u

网页抓取邮箱

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; namespace Wi

网络抓取邮箱

namespace WindowsFormsApplication5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WebClient wc = new WebClient();//定义一个新的 wc.Encoding = Encoding.Default;//定义他的格

利用SSLStrip截获https协议--抓取邮箱等密码

1.SSL解析 SSL 是 Secure Socket Layer 的简称, 中文意思是安全套接字层,由 NetScape公司所开发,用以保障在 Internet 上数据传输的安全,确保数据在网络的传输过程中不会被截取和窃听. SSL 协议提供的服务主要有: (1)认证用户和服务器,确保数据发送到正确的客户和服务器. (2)加密数据以防止数据中途被窃取. (3)维护数据的完整性,确保数据在传输过程中不被改变. 2.SSLStrip SSLStrip 的工作原理及步骤如下: (1) 先进行中间人攻

Python正则表达式抓取邮箱

emailRegex = r"[-_\w\.]{0,64}@([-\w]{1,63}\.)*[-\w]{1,63}" email = re.search(emailRegex,"str") 用户名中字符主要有大小写字母,下划线_,阿拉伯数字,点号.并且有长度限制{0,64},用字符组限制为[-_\w\.]{0,64} 中间用@分割开 主机名则有多种情况,通过域名描述,域名由字母数字及-组成,不同级域名之间由.分割,长度同样有限制用字符组限制 为([-\w]{1,63

用PHP抓取百度贴吧邮箱数据

注:本程序可能非常适合那些做百度贴吧营销的朋友. 去逛百度贴吧的时候,经常会看到楼主分享一些资源,要求留下邮箱,楼主才给发. 对于一个热门的帖子,留下的邮箱数量是非常多的,楼主需要一个一个的去复制那些回复的邮箱,然后再粘贴发送邮件,不是被折磨死就是被累死.无聊至极写了一个抓取百度贴吧邮箱数据的程序,需要的拿走. 程序实现了一键抓取帖子全部邮箱和分页抓取邮箱两个功能,界面懒得做了,效果如下: 老规矩,直接贴源码 <?php $url2=""; $page="";

开源爬虫 ── 专业、强大的万维网资源定向抓取、爬抓工具

网络爬虫 又称网页蜘蛛.网络机器人.在 FOAF 社区常称网页追逐者.网络爬虫 是一种按照一定规则,自动抓取万维网信息的程序或脚本.另外一些不常使用名称还有蚂蚁.自动索引.模拟程序或蠕虫. 随着网络的迅速发展,万维网成为大量信息的载体,如何有效提取并利用这些信息成为一个巨大挑战.搜索引擎 (Search Engine),譬如:传统搜索引擎 AltaVista.Yahoo!.Google.百度.360 搜索.好搜.搜狗.Bing 等作为辅助人们检索信息的工具,已成为用户访问万维网的入口和指南.但是