.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