06
2013
05

采集博客园asp.net的文章内容实例(下)

在上一文章中的“文章信息操作类(Articles)”添加如下方法来读取文章内容,博客园文章内容都是包含在同一个div中,所以如下:

/// <summary>
/// 采集博客园asp.net文章内容实例(下)
/// </summary>
/// <returns>读取文章后返回文章内容字符串</returns>
public static string GetArtContent(string artUrl)
{
    string TextStr = "";

    //网页操作对象,我用来获取网页源码
    HTML html = new HTML();

    //对博客园每日排行数据进行采集
    string htmlcode = html.GetHTML(artUrl, "utf-8");

    int strIndex = htmlcode.IndexOf("<div id=\"cnblogs_post_body\">") + ("<div id=\"cnblogs_post_body\">") .Length;
    int endIndex = htmlcode.IndexOf("</div><div id=\"MySignature\"></div>");

    TextStr = htmlcode.Substring(strIndex, endIndex - strIndex);

    return TextStr;
}

然后在该项目中新建一个winform窗体“Form2”,在里面加两个控件:DataGridView和WebBrowser,DataGridView用来绑定所读取到的文章地址URl(隐藏)、标题和时间,WebBrowser用来显示文章内容,代码如下:

private void Form2_Load(object sender, EventArgs e)
{
    //得到采集的全部文章
    List<Article> list = Articles.GetArticles();
    //通过循环将全部文章遍历
    if (list != null)
    {
        DataTable db = new DataTable();
        db.Columns.Add("DateTime", System.Type.GetType("System.String"));
        db.Columns.Add("Title", System.Type.GetType("System.String"));
        db.Columns.Add("Url", System.Type.GetType("System.String"));

        foreach (Article at in list)             //查找文件 
        {
            DataRow newdr = db.NewRow();
            newdr[0] = Convert.ToDateTime(at.Datatime).ToString("yyyy-MM-dd"); //转换为只显示日期
            newdr[1] = at.Title.ToString();
            newdr[2] = at.Url.ToString();
            db.Rows.Add(newdr);
        }

        DgvTable.DataSource = db; 
    }
}

private void DgvTable_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (DgvTable.CurrentRow != null)
    {
        int Crows = DgvTable.CurrentRow.Index;

        if (Crows >= 0)
        {
            string dateTime = DgvTable.Rows[Crows].Cells["DateTime"].Value.ToString();
            string title = DgvTable.Rows[Crows].Cells["Title"].Value.ToString();
            string url = DgvTable.Rows[Crows].Cells["Url"].Value.ToString(); 

            //读取文章内容
            string TextStr = Articles.GetArtContent(url); 
            webBrowser1.DocumentText = TextStr;
        }
    }
}

效果图:image

« 上一篇下一篇 »

评论列表:

来支持一下!!!
2.免烧砖托板  2013/5/13 14:58:00 回复该留言
学习了
3.脸型测试  2013/5/13 17:17:50 回复该留言
写的不错 学习了
4.度哥  2013/5/22 9:28:33 回复该留言
不错,以前我也采集,现在不采了

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。