时间:2016-02-16 00:08 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码】,下面是详细的讲解!
使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using S1;
using System.Net;
using System.IO;
using System.Text;
using HtmlAgilityPack;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string page=string.Empty;
if (!IsPostBack)
{
WebClient wc=new WebClient();
string address="http://www.cnblogs.com";
if (!string.IsNullOrEmpty(Request.QueryString["p"]))
{
address +="/" + Request.QueryString["p"];//分页,p=p2,p=p3
}
Stream stream=wc.OpenRead(address);
StreamReader sr=new StreamReader(stream, Encoding.UTF8);
string html=sr.ReadToEnd();
//实例化HtmlAgilityPack.HtmlDocument对象
HtmlDocument doc=new HtmlDocument();
//载入HTML
doc.LoadHtml(html);
//根据HTML节点NODE的ID获取节点
HtmlNode navNode=doc.GetElementbyId("post_list");
//div[2]表示文章链接a位于post_list里面第3个div节点中
HtmlNodeCollection list=navNode.SelectNodes("//div[2]/h3/a"); //根据XPATH来索引节点
Cnblogs cnblogs=null;
IList<Cnblogs> cnlist=new List<Cnblogs>();
foreach (HtmlNode node in list)
{
cnblogs=new Cnblogs();
//获取文章链接地址
cnblogs.url=node.Attributes["href"].Value.ToString();
//获取文章标题
cnblogs.title=node.InnerText;
cnlist.Add(cnblogs);
}
HtmlNodeCollection list1=navNode.SelectNodes("//div[2]/div/a");
for (int i=0; i < cnlist.Count; i++)
{
cnlist[i].author=list1[i].InnerText;
cnlist[i].authorUrl=list1[i].Attributes["href"].Value.ToString();
cnlist[i].updatetime=list1[i].NextSibling.InnerText.Replace("发布于", "").Trim();
}
this.Repeater1.DataSource=cnlist;
this.Repeater1.DataBind();
}
}
public class Cnblogs
{
public string title { get; set; }
public string url { get; set; }
public string author { get; set; }
public string authorUrl { get; set; }
public string updatetime { get; set; }
}
}
关于使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 【asp】asp.net开发中常见公共捕获异常方式总结(
- 【Visual】分享Visual Studio原生开发的10个调试
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
