C#获取HTML文件指定DIV内容

最近自己找了一个开源的博客网站,放到阿里云上,方便自己发布博客。

我一般把文章发布到博客园和QQ空间,家了这个网站后又要多发布一次,为了省事就做了一个从博客园读取文章的功能;

输入链接URL地址点击提交;

从GetHub安装HtmlAgilityPack

后台C#代码

public ActionResult LinkBlog(string urlStr)
        {
            Response response = new Response() { Code =1 };
            if (string.IsNullOrWhiteSpace(urlStr))
            {
                response.Code = 0;
                response.Message = "链接URL必填";
                return Json(response);
            }

            WebClient c = new WebClient();
            c.Encoding = Encoding.GetEncoding("UTF-8");
            string html = c.DownloadString(urlStr);

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            HtmlNode nodeinfo = doc.GetElementbyId("post_detail");

            //post_detail
            //
            HtmlNode nodetitle = doc.GetElementbyId("cb_post_title_url");

            //cnblogs_post_body

            HtmlNode nodecontent = doc.GetElementbyId("cnblogs_post_body");

            string htmlstr = nodeinfo.OuterHtml;

            Blog blog = new Blog();
            blog.Publish = true;
            blog.Title =string.Format("链接文章:{0}", nodetitle.InnerText);
            blog.Volume = 0;
            blog.Content = htmlstr;
            blog.CreateTime = DateTime.Now;
            string htmlsumm = nodecontent.InnerText.Replace(" ", "");
            int sublen = htmlsumm.Length;
            if (sublen > 80)
            {
                sublen = 80;
            }
            blog.Summary = htmlsumm.Substring(0, sublen);

            blog.Category=  categoryManager.FindRoot()[0];
            response = blogManager.AddBlog(blog);

            return Json(response);
        }

应用的技术

WebClient c = new WebClient();

c.Encoding = Encoding.GetEncoding("UTF-8");

string html = c.DownloadString(urlStr);

通过WebClient读取网页,注意这里的编码问题,有的网页用的是UTF-8有的是GB2312

自己尝试一下就知道了,编码设置错误会出现汉子乱码。

HtmlDocument doc = new HtmlDocument();

doc.LoadHtml(html);

HtmlNode nodeinfo = doc.GetElementbyId("post_detail");

读取HTML字符串中指定id的标签的内容;

参考博客:http://www.cnblogs.com/ITmuse/archive/2010/05/29/1747199.html

最终我不用再重复添加博客了,不过还多亏博客园没有做图片防盗链,否则图片还要单独处理。

时间: 2024-11-05 21:35:35

C#获取HTML文件指定DIV内容的相关文章

获取txt文件指定行内容

#!/usr/bin/python num=0; ni=open("C:\Python34\ceshi.txt") for line in ni: num=num+1;  #表示行数 if num==4:  #当num为4时,打印出第四行的内容,在开始的编写中写成了num=4,运行时一直提示语法错误,找了半天原因才明白需写成==,=是赋值,==是比较   print(line) ni.close() #import linecache #print(linecache.getline(

python读取文件指定行内容

import linecache text=linecache.getline(r'C:\Users\Administrator\Desktop\SourceCodeofMongoRedis\chapter_5\generate_string.py',10) 第十行内容为# info = '''1000001 王小小''' 原文地址:https://www.cnblogs.com/tjp40922/p/12393080.html

从html字符串中获取div内容---jquery

思考的问题: 怎么在一个网页的div中嵌套另外的网页(不使用inclue,iframe和frame,不使用他们的原因,include只能嵌套静态网页,iframe对网络爬虫影响,frame嵌套网页无法获取父级页面信息,不够灵活) 如果不想嵌套整个网页怎么办?(只是嵌套另外页面的部分内容) 回答(想法): 使用jquery的ajax函数或者load函数可以获取网页内容,从而实现嵌套网页(获取到的网页内容是html字符串) 怎么从字符串中获取部分内容? 实践1: index.html页面(在这个页面

php获取网页中图片与DIV内容实例

分享下php获取网页中图片.DIV内容的简单方法,都是通过正则表达式实现的. 1.获取网页中所有的图片: <?php //取得指定位址的內容,并储存至 $text $text=file_get_contents('http://www.jbxue.com/'); //取得所有img标签,并储存至二维数组 $match 中 preg_match_all('/<img[^>]*>/i', $text, $match); //打印出match print_r($match); ?>

Qt获取office文件内容

Qt获取office文件内容 需要获取word文件的文件内容.网上找了好久,大部分都是excel的.而word的很少.所以在这里记录一下,方便大家查阅和自己使用. 使用的Qt版本是5.4.2 . 下面通过代码说明: 首先在.pro文件中加入 QT       += axcontainer 需要加入以下头文件 #include <QAxWidget> #include <QAxObject> 详细代码如下 void Qt_word(QString filePath) { //指定要打

获取table表格指定列的所有单元格的内容

获取table表格指定列的所有单元格的内容:本章节介绍一下如何获取表格指定列的所有单元格的内容,这可能在一些应用或者说扩展应用中会需要.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <titl

python3获取指定目录内容的详细信息

不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import os, time, sys from os.path import join, getsize def ListDir(dir_data): ''' :param dir_data: 指定获取内容

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7

java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.