C#获取HTML文本的第一张图片与截取内容摘要示例代码_C#教程

获取第一张图片

要我们获得到的数据是一段HTML文本、也许这段文本里面有许多图片、需要截取一张作为标题图片、也就是做为主图、这时就可以用到下面这个方法获取到第一张图片。

示例代码

#region 获取第一张图片
/// <summary>
/// 获取HTML文本的图片地址
/// </summary>
/// <param name="content"></param>
/// <returns></returns>/
///
public ArrayList getimgurl(string html)
{
  ArrayList resultStr = new ArrayList();
  Regex r = new Regex(@"<IMG[^>] src=s*(?:´(?<src>[^´] )´|""(?<src>[^""] )""|(?<src>[^>s] ))s*[^>]*>", RegexOptions.IgnoreCase);//忽视大小写
  MatchCollection mc = r.Matches(html);

  foreach (Match m in mc)
  {
    resultStr.Add(m.Groups["src"].Value.ToLower());
  }
  if (resultStr.Count > 0)
  {
    return resultStr;
  }
  else
  {
    resultStr.Clear();
    return resultStr;
  }
}
#endregion

注意:上面所返回的是一个ArrayList 集合、包含了文本里面所有的Img的src、这样我们就可以访问到img的src

截取HTML文本

有时候我们得到的数据是一段HTML文本、需要截取HTML文本的一部分作为内容摘要、此时、我们可以运用下面这个方法

示例代码

 #region 新闻内容摘要
/// <summary>
/// 新闻内容摘要
/// </summary>
/// <param name="sString"></param>
/// <param name="nLeng"></param>
/// <returns></returns>
public string GetContentSummary(string content, int length, bool StripHTML)
{
  if (string.IsNullOrEmpty(content) || length == 0)
    return "";
  if (StripHTML)
  {
    Regex re = new Regex("<[^>]*>");
    content = re.Replace(content, "");
    content = content.Replace(" ", "").Replace(" ", "");
    if (content.Length <= length)
      return content;
    else
      return content.Substring(0, length)  "……";
  }
  else
  {
    if (content.Length <= length)
      return content;

    int pos = 0, npos = 0, size = 0;
    bool firststop = false, notr = false, noli = false;
    StringBuilder sb = new StringBuilder();
    while (true)
    {
      if (pos >= content.Length)
        break;
      string cur = content.Substring(pos, 1);
      if (cur == "<")
      {
        string next = content.Substring(pos  1, 3).ToLower();
        if (next.IndexOf("p") == 0 && next.IndexOf("pre") != 0)
        {
          npos = content.IndexOf(">", pos)  1;
        }
        else if (next.IndexOf("/p") == 0 && next.IndexOf("/pr") != 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
            sb.Append("<br/>");
        }
        else if (next.IndexOf("br") == 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
            sb.Append("<br/>");
        }
        else if (next.IndexOf("img") == 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
          {
            sb.Append(content.Substring(pos, npos - pos));
            size = npos - pos  1;
          }
        }
        else if (next.IndexOf("li") == 0 || next.IndexOf("/li") == 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
          {
            sb.Append(content.Substring(pos, npos - pos));
          }
          else
          {
            if (!noli && next.IndexOf("/li") == 0)
            {
              sb.Append(content.Substring(pos, npos - pos));
              noli = true;
            }
          }
        }
        else if (next.IndexOf("tr") == 0 || next.IndexOf("/tr") == 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
          {
            sb.Append(content.Substring(pos, npos - pos));
          }
          else
          {
            if (!notr && next.IndexOf("/tr") == 0)
            {
              sb.Append(content.Substring(pos, npos - pos));
              notr = true;
            }
          }
        }
        else if (next.IndexOf("td") == 0 || next.IndexOf("/td") == 0)
        {
          npos = content.IndexOf(">", pos)  1;
          if (size < length)
          {
            sb.Append(content.Substring(pos, npos - pos));
          }
          else
          {
            if (!notr)
            {
              sb.Append(content.Substring(pos, npos - pos));
            }
          }
        }
        else
        {
          npos = content.IndexOf(">", pos)  1;
          sb.Append(content.Substring(pos, npos - pos));
        }
        if (npos <= pos)
          npos = pos  1;
        pos = npos;
      }
      else
      {
        if (size < length)
        {
          sb.Append(cur);
          size ;
        }
        else
        {
          if (!firststop)
          {
            sb.Append("……");
            firststop = true;
          }
        }
        pos ;
      }

    }
    return sb.ToString();
  }
}
#endregion

总结

以上就是利用C#获取一段HTML文本中的第一张图片和截取内容摘要的全部内容,希望本文的内容对大家学习或者使用C#能有所帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c
, html
, 截取
, 文本内容
, 解析html
截取html标签
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-20 00:05:46

C#获取HTML文本的第一张图片与截取内容摘要示例代码_C#教程的相关文章

WordPress获取文章内容摘要程序代码

这个是我自己写的获取文章内容摘要程序  代码如下 复制代码 <?php  global $more;    $more = 1;    //1=全文 0=摘要   $my_content = strip_tags(get_the_excerpt(), $post->post_content); //获得文章   $my_content = str_replace(array("rn", "r", "n", " ",

C#获取路由器外网IP,MAC地址的实现代码_C#教程

C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密码,但是需要有一个代理页面获取客户端公网ip地址的,这样C#请求此页面即可获取到路由器公网ip地址.如 //getip.ashx 测试路由为水星 MR804,水星 MR808,都可以成功重启路由和获取到路由器MAC和外网IP地址 源代码 using System.Text; using System

解析错误富文本json字符串(带双引号)的快速解决方法_C#教程

公司的项目,通过json传回来的是这么个东西: NewsId":"94f52614-8764-46d7-a5fe-d0da1fe878ed","NewsTitle":"大型公选课<可持续发展与未来>系列二之现代经济(绿色经济)开始网上选课报名","NewsContent":"<span style="font-size:12pt;font-family:宋体;color:blac

C++访问注册表获取已安装软件信息列表示例代码_C 语言

复制代码 代码如下: // ---------------------------------------------------------------// FlieNmae: //   SofInfo.h// Remark://   通过读取注册表获得本机已安装软件信息.// ---------------------------------------------------------------#pragma once#include <vector> struct SoftInfo

C#获取计算机名,IP,MAC信息实现代码_C#教程

利用C#获取计算机名,IP,MAC信息,如下为源代码: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Management; namespace Wenanry.Net { /// <summary> /// 获取计算机系统信息 /// </summary> public class ManagementSyst

js 获取、清空input type=&amp;quot;file&amp;quot;的值(示例代码)_javascript技巧

上传控件(<input type="file"/>)用于在客户端浏览并上传文件,用户选取的路径可以由value属性获取,但value属性是只读的,不能通过 javascript来赋值,这就使得不能通过value=""语句来清空它.很容易理解为什么只读,如果可以随意赋值的话,那么用户只要打开你的网页, 你就可以随心所欲的上传他电脑上的文件了. js 获取<intput type=file />的值 复制代码 代码如下: <html>

C#实现简单获取扫码枪信息代码_C#教程

一个扫码枪遵循TCP协议,通过改代码即可获取扫码枪所扫描的信息:(有一个串口服务器): using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; using System.Diagnostics; using System.Net; namespac

在C#中根据HardwareID获取驱动程序信息的实现代码_C#教程

近日在工作中需要根据设备的HardwareID来获取设备的驱动程序信息,比如驱动程序版本等.经过摸索,得到了两种不同的解决办法,两种办法各有千秋,写出来给大家分享. 1 使用WMI中的Win32_PnPSignedDriver类 Win32_PnPSignedDriver的详细信息:http://msdn2.microsoft.com/en-us/library/aa394354.aspx 使用WMI(Windows Management Instrumentation)是最为方便的方法.可以根

C#中使用Socket获取网页源代码的代码_C#教程

WebToolkit类: 复制代码 代码如下: using System; using System.Net.Sockets; using System.Text; namespace ConsoleApplication1 { class WebToolkit { /// <summary> /// Url结构 /// </summary> struct UrlInfo { public string Host; public int Port; public string Fi