visual studio 2010下 C# 编写的一个简单的网页源代码分析、链接抓取器

先上图:

visual studio 2010下 C# 编写的一个简单的网页源代码分析、链接抓取器_第1张图片


使用方法:

只要输入网址、用于匹配链接的正则表达式、补充的前缀就可以抓取到整个页面的所有符合条件的链接,

并且会在C盘生成一个TXT文件保存链接。

如果再进一步设计,可以设计成抓取全站的链接,但是目前不太了解具体实现方法,所以就暂时不做下去了。


主要代码:

Form1.cs

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.Net;//web操作命名空间
using System.IO;//读取文件流命名空间
using System.Text.RegularExpressions;//正则表达式命名空间

namespace 网页源代码分析抓取
{
    public partial class Form1 : Form
    {
    
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)  //抓取链接
        {
            string input = richTextBox1.Text;
            string pattern = textBoxRegex.Text;
            Regex rgx = new Regex(pattern);
            MatchCollection matches = rgx.Matches(input);
            if (matches.Count > 0)
            {
                richTextBox2.AppendText("在本页抓取到:" + matches.Count+" 个符合条件的链接\n");
                foreach (Match match in matches)
                {
                    string Url=textBoxPrefix.Text + match.Groups[1];
                    string Appname = match.Groups[2]+"\n"+"\n";
                    richTextBox2.AppendText(Url+"\n");
                    //写文件操作
                    using (StreamWriter sw = new StreamWriter(@"C:\AppInfo.txt", true))
                    {
                        sw.WriteLine(Url);
                        sw.WriteLine(Appname);
                    }
                }
                richTextBox2.AppendText("The End★★★★★★★★★★★★★★★★★★★★★★★★★★!");
            }
        }

        private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
        {
            // Call Process.Start method to open a browser, with link text as URL
            System.Diagnostics.Process.Start(e.LinkText); // call default browser
        }

        private void buttonReadWebCode_Click(object sender, EventArgs e)  //读取网页源码
        {
            richTextBox1.Clear();
            richTextBox2.Clear();
            WebRequest request = WebRequest.Create(textBoxUrl.Text);//实例化WebRequest对象
            WebResponse response = request.GetResponse();//创建WebResponse对象
            Stream datastream = response.GetResponseStream();//创建流对象
            Encoding ec = Encoding.Default;
            if(radioButton2.Checked)
            ec = Encoding.UTF8;
            else if(radioButton3.Checked) 
            ec = Encoding.Unicode;

            StreamReader reader = new StreamReader(datastream, ec);
            string responseFromServer = reader.ReadToEnd();//读取数据
            richTextBox1.AppendText(responseFromServer);//添加到RichTextBox控件中
            reader.Close();
            datastream.Close();
            response.Close();
            MessageBox.Show("★★★★★★★★\n网页源码读取完毕!");
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            string text1="输入网址,输入用于匹配 你想要获取的特定链接 的正则表达式,\n";
            string text2="注意,如果通过匹配获得的链接是站内链接,你还需要加入网址前缀。\n";
            string text3="然后点击【读取网页源代码】,点击【抓取链接】,最下面的文本框显示的";
            string text4 = "就是你所需要的链接。\n";
            string text5 = "会有一个txt文件生成在C盘,保存的是App页面链接和App名称。";
            string text6 = "designer:stormwy";
            MessageBox.Show(text1+text2+text3+text4+text5+text6,"使用说明",MessageBoxButtons.OK,MessageBoxIcon.None);
        }

        private void richTextBox1_LinkClicked_1(object sender, LinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start(e.LinkText); // call default browser
        }
    }
}

具体源代码下载地址:http://download.csdn.net/detail/stormwy/4598598



你可能感兴趣的:(正则表达式,String,C#,RadioButton,代码分析,2010)