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

.net如何在源文件中抓取信息

1、如何抓取源文件
2、如何在源文件中截取到所需要的链接
3、找到链接后需要打开另外一个页面,然后在页面中抓取联系方式,存到数据库中
本人是新手,希望大家能给具体代码+注释,谢谢了 --------------------编程问答-------------------- 采集博客园首页推荐文章:
		HttpWebRequest httpWebRequest = WebRequest.Create(@"http://www.cnblogs.com") as HttpWebRequest;
HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
Stream stream = httpWebResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string s = reader.ReadToEnd();
reader.Close();
stream.Close();
httpWebResponse.Close();
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(s);
HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(@"//a[@class='titlelnk']");
foreach (HtmlNode anchor in anchors)
Response.Write(anchor.InnerHtml + "<br/>" + anchor.Attributes["href"].Value + "<br/><br/>");
Response.End();

解析采用HtmlAgilityPack,可百度一下。 --------------------编程问答-------------------- 正则去匹配吧 --------------------编程问答-------------------- 只有代码问题都不贴出来了。因为这个也是看你抓取数据格式了。用正则表达式是完全可以解决的。。 --------------------编程问答-------------------- HtmlAgilityPack.dll
 楼主可以研究下这个  很强悍的. --------------------编程问答--------------------


string Url = "http://www.ip.cn/getm.php?from=web&q=" + Sou;
        string strResult = "";
        try
        {
            string check = "<code>";
            string checktype = ":";


            //创建访问目标
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);

            //声明一个HttpWebRequest请求
            request.Timeout = 30000;
            //设置连接超时时间
            request.Headers.Set("Pragma", "no-cache");
            //得到回应
            System.Threading.Thread.Sleep(1000);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //得到数据流
            Stream streamReceive = response.GetResponseStream();

            //对获取到的数据流进行编码解析,让我们可以进行正常读取
            Encoding encoding = Encoding.GetEncoding("utf-8");
            StreamReader streamReader = new StreamReader(streamReceive, encoding);
            //读取出数据流中的信息
            strResult = streamReader.ReadToEnd();
            //关闭流
            strResult = strResult.Replace("\n", "");
            strResult = strResult.Replace("\r", "");
            strResult = strResult.Replace("\t", "");
            strResult = strResult.Substring(strResult.IndexOf(check) + check.Length);
            mobi.Num = strResult.Substring(0, strResult.IndexOf("<"));
            strResult = strResult.Substring(strResult.IndexOf(checktype) + checktype.Length + 1);
            mobi.Position = strResult.Substring(0, strResult.IndexOf(" "));
            strResult = strResult.Substring(strResult.IndexOf(" ") + 1);
            mobi.Name = strResult.Substring(0, strResult.IndexOf("<"));


            streamReader.Close();
            //关闭网络响应流
            response.Close();
        }
        catch
        {
            throw;
        }


以前做来代替人工查询归属地的代码。  希望对你又帮助。  

至于数据方面的。   要自己调试。 不同的页面代码不同  
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,