我的数据通过一个TextBox输入,这些代码是写在一个button的点击事件里的。
网页数据抓取大概分为两步,第一步是获取网页源代码:
具体注释如下:
var currentUrl = TextBox1.Text;//获得要抓取的网页的URL地址 var request = WebRequest.Create(currentUrl) as HttpWebRequest;//请求对象 var response=request.GetResponse()as HttpWebResponse;//定义页面回应对象
var encode = string.Empty; encode = response.CharacterSet;//获得网页的编码
Stream stream;//数据流 if (response.ContentEncoding.ToLower() == "gzip") { stream = new GZipStream(response.GetResponseStream(), ComPRessionMode.Decompress); } else { stream = response.GetResponseStream(); }//解压缩 var sr = new StreamReader(stream,Encoding.GetEncoding(encode));//定义数据流读取对象 var html = sr.ReadToEnd(); sr.Close(); HtmlDocument document=new HtmlDocument(); document.LoaDHTML(html);//将数据存入document
得到了网页源代码,接下来就是对其解析,就是第二步:
解析可以使用正则表达式或是Spilt等字符串操作方法。
根据源代码写出的Xpath,利用节点得到位于两个节点之间的数据:
我的对象网页就是我的博客主页http://home.VEVb.com/u/xuwanghu/
string sumLine = document.DocumentNode.SelectSingleNode("//body//ul[@id='user_profile']").InnerText;
string yuanlin = sumLine2.ToString().Split(':')[0].Split('博')[0];
这样子,就将园龄存入了yuanlin,也就实现了抓取网页数据的功能。
新闻热点
疑难解答