如何用c#编写程序,读入一个网站的网页,查找其中的字符,并输入?最近看论坛,好多人跟帖,但是作者的发言好难找
能不能编写段代码,来自动列出作者的发言?
思路:
打开网页
读入此网页的源文件
搜索此文件的作者名及发言但是,如何使用c#读入此网页源文件呢?
高手请指教!!!!!

解决方案 »

  1.   

    ctrl+F "楼主"   ^&^
      

  2.   

    MOP就有这玩意,不过,一般技术群里面不像是MOP成百上千的吧,还是Ctrl+F方便一些
      

  3.   

    大家都没有明白我的意思!!!
    比如一个帖子有200页
    那么我得在200页中找作者的留言
    我想用一个程序来获取作者的留言我想编写一段程序循环读入每个网页(因为URL地址比较有规律),然后查找出来,输入到一个文件中此程序
    输入有:URL 和作者名
    目标输出有:每一个URL对应的网页中与作者名对应的作者留言!
      

  4.   

    你可以去分析一下HTML里面的结构,如果是某个人的回贴,应当有一段的结构是相似的,因此,你可以使用正则查找出来,或者你直接分析字符串比较出来也行
      

  5.   

    我写过一个工具。WEBGATHER(通用WEB数据采集专家)完全可以满足你的要求。
     
    预览地址;http://blog.csdn.net/zj53hao/Gallery/380488.aspx
    V2.0版本已经开源。http://download.csdn.net/hicsdn/zj53hao
    目前正在建设V2.1版。支持更多自定义和插件功能。但要求使用者,有一定的正则表达式经验。V2.1版准备增加普通模式。不要求一定用表达试提取数据
      

  6.   

    我觉得你这个就是一个小偷程序吧
           public void show5()
            {
                Encoding gb2312 = Encoding.GetEncoding("gb2312");
                String web_url = "http://china.fxstreet.com/fundamental/economic-calendar/";
                //要获取的网址URL
                String code = String.Empty;
                //存放网页的源文件
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(web_url);
                WebResponse response = request.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), gb2312);
                //获取源文件
                code = sr.ReadToEnd();
                sr.Close();
                ArrayList list = new ArrayList();
                //用来存放链接
                String reg = @"<td align=.left.>\d*:\d*</td><td>\D*</td><td><a.*return false;.>.*</a></td>.*<img.*</td><td id=.*</td><td>.*nowrap=.nowrap.>.*</td>";
                String reg1 = @"<td align=.left.>\d*:\d*</td>";
                String reg2 = @"<td>\D*</td><td><a";
                String reg3 = @"return false;.>.*</a></td>";
                String reg4 = @"</a></td><td><img.*alt=.* expected. /></td>";
                String reg5 = @"<td id=.*</td><td>.*</td><td nowrap";
                String reg6 = @"nowrap=.nowrap.>.*</td><td><img";
                //链接的正则表达式
                Regex regex = new Regex(reg, RegexOptions.IgnoreCase);
                MatchCollection mc = regex.Matches(code);
                //存放匹配的集合
                for (int i = 0; i < mc.Count; i++)
                {
                    Regex regex1 = new Regex(reg1, RegexOptions.IgnoreCase);
                    MatchCollection mc1 = regex1.Matches(mc[i].Value.ToString());
                    Regex regex2 = new Regex(reg2, RegexOptions.IgnoreCase);
                    MatchCollection mc2 = regex2.Matches(mc[i].Value.ToString());
                    Regex regex3 = new Regex(reg3, RegexOptions.IgnoreCase);
                    MatchCollection mc3 = regex3.Matches(mc[i].Value.ToString());
                    Regex regex4 = new Regex(reg4, RegexOptions.IgnoreCase);
                    MatchCollection mc4 = regex4.Matches(mc[i].Value.ToString());
                    Regex regex5 = new Regex(reg5, RegexOptions.IgnoreCase);
                    MatchCollection mc5 = regex5.Matches(mc[i].Value.ToString());
                    Regex regex6 = new Regex(reg6, RegexOptions.IgnoreCase);
                    MatchCollection mc6 = regex6.Matches(mc[i].Value.ToString());
                    bool hasExist = false;
                    //链接存在与否的标记
                    if (mc1.Count < 1)
                    {
                        continue;
                    }
                    String ctime = mc1[0].Value;
                    String carea = mc2[0].Value;
                    String ctitle = mc3[0].Value;
                    String ccurrent = mc4[0].Value;
                    String cforecast = mc5[0].Value;
                    String clast = mc6[0].Value;
                    ctime = ctime.Substring(ctime.Length - 10, 5);
                    carea = carea.Replace("</td>", "");
                    carea = carea.Replace("<td>", "");
                    carea = carea.Replace("<a", "");
                    ctitle = ctitle.Replace("return false;\">", "");
                    ctitle = ctitle.Replace("</a></td>", "");
                    ctitle = ctitle.Replace("&nbsp;", "");
                    ctitle = ctitle.Replace("<img src=\"http://mediaserver.fxstreet.com/images/p.gif\" />", "");
                    ccurrent = ccurrent.Substring(60, 1);
                    cforecast = cforecast.Replace("<span class=\"alertadolenta\">", "");
                    cforecast = cforecast.Replace("</span>", "");
                    cforecast = cforecast.Replace("<span class=\"alertabona\">", "");
                    cforecast = cforecast.Substring(53, cforecast.Length - 77);
                    cforecast = cforecast.Replace("</td><", "");
                    cforecast = cforecast.Replace("</td>", "");
                    cforecast = cforecast.Replace("</td", "");
                    cforecast = cforecast.Replace("td", "");
                    cforecast = cforecast.Replace("</t", "");
                    cforecast = cforecast.Replace("</", "");
                    clast = clast.Replace("nowrap=\"nowrap\">", "");
                    clast = clast.Replace("</td><td><img", "");
                    //foreach (String one in list)
                    //{
                    //    if (ctitle == one)
                    //    {
                    //        hasExist = true;
                    //        //链接已存在
                    //        break;
                    //    }
                    //}
                    ////链接不存在,添加
                    //if (!hasExist) this.TextBox2.Text += ctime + "," + carea + "," + ctitle + "," + ccurrent + "," + cforecast + "," + clast + "\r\n";
                    AddData(ctime, carea, ctitle, ccurrent, cforecast, clast);
                }
            }
    提供参考