当前位置:编程学习 > C#/ASP.NET >>

C#版网络爬虫

本人是菜鸟,C#懂得可怜,学校要做一个C#版或者Java版的网络爬虫
目标是捕获一个网站里面的用户提出来的问题与回答,
一列一列的爬下来,存入自己的数据库
各位大侠们帮帮忙 对你们说小菜一碟!!!~_~ --------------------编程问答-------------------- 顶顶....... --------------------编程问答-------------------- lz做出来就是菜牛了~哈哈~lz找点网页抓取源码 --------------------编程问答-------------------- 这个就是从入口地址拿源码,根据源码做你要做的事,之后用正则从此源码中提取url。循环继续 --------------------编程问答-------------------- 应该有吧。。。。。。 --------------------编程问答-------------------- 正则表达式提取HTML源代码。 --------------------编程问答-------------------- 不论你如何爬,总是有规则的。最简单的办法就是用webbrower,写好抓取步骤,不过前提是你必须懂得基本web程序 --------------------编程问答--------------------                         HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
                                           HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                                       stream = myHttpWebResponse.GetResponseStream();
然后你自己分析一下内容就搞定了 --------------------编程问答-------------------- 参考:提取网页全部链接

//前台:

<div>
        <asp:TextBox ID="TextBox1" runat="server" Width="481px"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提取" />
        <br />
        <asp:TextBox ID="TextBox2" runat="server" Height="304px" TextMode="MultiLine" Width="524px"></asp:TextBox>
    </div>

 

//后台:

protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox2.Text = "";
        string web_url = this.TextBox1.Text        string all_code = "";
        HttpWebRequest all_codeRequest = (HttpWebRequest)WebRequest.Create(web_url);
        WebResponse all_codeResponse = all_codeRequest.GetResponse();
        StreamReader the_Reader = new StreamReader(all_codeResponse.GetResponseStream());
        all_code = the_Reader.ReadToEnd();
        the_Reader.Close();
        ArrayList my_list = new ArrayList();
        string p = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
        Regex re = new Regex(p, RegexOptions.IgnoreCase);
        MatchCollection mc = re.Matches(all_code);

        for (int i = 0; i <= mc.Count - 1; i++)
        {
            bool _foo = false;
            string name = mc[i].ToString();
            foreach (string list in my_list)
            {
                if (name == list)
                {
                    _foo = true;
                    break;
                }
            }//过滤

            if (!_foo)
            {
                TextBox2.Text += name + "\n";
            }
        }
    }

--------------------编程问答-------------------- up --------------------编程问答-------------------- 好 --------------------编程问答-------------------- up --------------------编程问答-------------------- 來學習  --------------------编程问答-------------------- 小得不能再小的小程序。

你要先了解http原理,懂得用一种或者两种http调试工具来分析http消息数据,在稍微懂点正则用法(但是可抄袭的代码确实很多),看上去没什么技术要求。 --------------------编程问答-------------------- 这种东西属于技巧性的,而不是工程性的。

这种东西对那些喜欢使用调试、测试工具的人,一边玩着一边就做出来了(正规了反而费时间)。而对那些只在“培训学校”里学过编程的人,可能感觉很神秘。 --------------------编程问答-------------------- 正则式截取源码,就一个指定网站的,还是很好搞 --------------------编程问答-------------------- 下面链接就是一个c#写的网络爬虫,上面是翻译版 ,下面是英文原版
http://blog.csdn.net/wangkun9999/archive/2007/05/02/1594496.aspx
http://www.codeproject.com/cs/internet/Crawler.asp

另外,爬虫抓下来的东西要进行分析是必然的了,但c#中好像没有HTML解析器,特别是对那种不太规范的HTML,这里是一些c#解析HTML的资料。
http://www.codeproject.com/csharp/html2xhtmlcleaner.asp
http://www.pcxy.net/Article/netprogramme/xml/Article_36767.html
http://www.cnblogs.com/dragon/archive/2006/12/06/174946.html
--------------------编程问答-------------------- 可用webclienet --------------------编程问答-------------------- 8楼的思路,可满足你的需要,最好自己动动手,多调试调试! --------------------编程问答-------------------- 真给力,总算找到一个简单的! --------------------编程问答--------------------
引用 14 楼  的回复:
这种东西属于技巧性的,而不是工程性的。

这种东西对那些喜欢使用调试、测试工具的人,一边玩着一边就做出来了(正规了反而费时间)。而对那些只在“培训学校”里学过编程的人,可能感觉很神秘。


P哥又在批评人了 呵呵
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,