C#数据采集用到的几个方法
这两天在做数据采集,因此整理了下数据采集要用到的一些方法。因为我采集的数据比较简单,所以没有用到框架。比较有名的两个框架 HtmlAgilityPack 和 Jumony,感兴趣的可以研究下。当然,火车头采集工具也很方便,不过要付费。下面是整理的代码:
/// <summary>
/// Html正则处理帮助类
/// </summary>
public class HtmlRegex
{
/// <summary>
/// 匹配所有Html标签
/// </summary>
const string HTMLALLTAG = @"<[^>]+>|</[^>]+>"; /// <summary>
/// 删除所有html标签
/// </summary>
/// <param name="content">原HTML代码</param>
/// <returns></returns>
public static string RemoveAllHtml(string content)
{
return Regex.Replace(content, HTMLALLTAG, "");
} /// <summary>
/// 根据正则匹配获取指定内容
/// </summary>
/// <param name="regStr">正则</param>
/// <param name="content">原HTML代码</param>
/// <param name="hashtml">是否包含HTML标签</param>
/// <returns></returns>
public static string GetStrByRegex(string regStr, string content, bool hashtml = true)
{
string result = string.Empty;
Regex reg = new Regex(regStr);
Match mth = reg.Match(content); if (mth.Success)
{
result = mth.Value;
if (!hashtml) result = HtmlRegex.RemoveAllHtml(result); //去除html标签 }
return result;
} /// <summary>
/// 获取指定位置的html代码
/// </summary>
/// <param name="start">起始字符串</param>
/// <param name="end">结束字符串</param>
/// <param name="content">原HTML代码</param>
/// <param name="hasHtml">是否包含HTML标签</param>
/// <returns></returns>
public static string GetStrByRegex(string start, string end, string content, bool hasHtml = true)
{
string result = string.Empty;
string regStr = @"(?is)(" + start + ").*?(" + end + ")";
Regex reg = new Regex(regStr);
Match mth = reg.Match(content);
if (mth.Success)
{
result = mth.Value;
if (!hasHtml) result = HtmlRegex.RemoveAllHtml(result); //去除html标签
}
return result;
} /// <summary>
/// 获取匹配的字符串列表
/// </summary>
/// <param name="regStr">正则</param>
/// <param name="content">原HTML代码</param>
/// <returns></returns>
public static List<string> GetStrListByRegex(string regStr, string content)
{
List<string> strList = null;
MatchCollection mc = null;
try
{
Regex reg = new Regex(regStr);
mc = reg.Matches(content);
if (mc.Count > )
{
strList = new List<string>();
for (int i = ; i < mc.Count; i++)
{
strList.Add(mc[i].Value);
}
}
}
catch
{
strList = null;
}
return strList;
} /// <summary>
/// 获取匹配的字符串列表
/// </summary>
/// <param name="start">起始字符串</param>
/// <param name="end">结束字符串</param>
/// <param name="content">原HTML代码</param>
/// <returns></returns>
public static List<string> GetStrListByRegex(string start, string end, string content)
{
List<string> strList = null;
MatchCollection mc = null;
string regStr = @"(?is)(" + start + ").*?(" + end + ")";
try
{
Regex reg = new Regex(regStr);
mc = reg.Matches(content);
if (mc.Count > )
{
strList = new List<string>();
for (int i = ; i < mc.Count; i++)
{
strList.Add(mc[i].Value);
}
}
}
catch
{
strList = null;
}
return strList;
} }
C#数据采集用到的几个方法的更多相关文章
- LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]
LabVIEW是NI公司的数据采集设备的标准平台,在其上调用NI-DAQmx驱动和接口函数能够高效的开发数据采集和控制程序.但作为一种图形化的开发语言,使用LabVIEW开发涉及算法和流程控制的大型应 ...
- 周报数据采集之生存图片(execl方法)
https://blog.csdn.net/Luzaofa/article/details/81675364 Python之Excel chart另存为图片大家好,好久没有更新博客了,这一段时间有点忙 ...
- 什么是Metrics-(通俗易懂)
在应用程序中,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如一个系统后台服务,我 ...
- 使用SNMP监控服务器运行情况
系统监测的基本概念及分类: a.系统监测的概述: 如何对现有IT架构的整体以及细节运行情况进行科学.系统和高效地监测是目前各企业运维和管理部门一项非常重要的工作内容.随着当前企业IT环境中服务器.应用 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- Zabbix系统数据采集方法总结
转:http://www.blog.chinaunix.net/uid-9411004-id-4115731.html 老文章,直接拿来用了,官网也有最新分类,没高兴翻译 在Zabbix系统中有多达十 ...
- 卡尔曼(Kalman)滤波及十种数据采集滤波的方法和编程实例
卡尔曼(Kalman)滤波:https://blog.csdn.net/CSDN_X_W/article/details/90289021 十种数据采集滤波的方法和编程实例:https://wenku ...
- ETL数据采集方法
1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表 ...
- 3种PHP实现数据采集的方法
https://www.php.cn/php-weizijiaocheng-387992.html
随机推荐
- node.js调试入门
1-1 Inspector介绍 使用Inspector调试Node.js的优势 可查看当前上下文的变量 可观察当前函数调用堆栈 不侵入代码 可在暂停状态下执行指定代码 Inspector的构成以及原理 ...
- 第3节:Java基础 - 必知必会(上)
第3节:Java基础 - 必知必会(上) 本篇是基础篇的第一小节,我们从最基础的java知识点开始学习.本节涉及的知识点包括面向对象的三大特征:封装,继承和多态,并且对常见且容易混淆的重要概念覆盖和重 ...
- 2019牛客全国多校第八场A题 All-one Matrices(单调栈)
题意:让你找最大不可扩展全1子矩阵的数量: 题解:考虑枚举每一行为全1子矩阵的的底,然后从左到右枚举:up[i][j]:表示(i,j)这个位置向上可扩展多少,同时还有记录每个位置(i,j)向左最多可扩 ...
- Swap Digits
Description ) in the first line, which has the same meaning as above. And the number is in the next ...
- CodeForces985F -- Isomorphic Strings
F. Isomorphic Strings time limit per test 3 seconds memory limit per test 256 megabytes input standa ...
- stm32 io操作 头文件规范
在stm32众多项目开发中,有太多的对io进行操作,若置1或清0,使用官方库提供的函数,固然方便,规范,但是需要包含标准的库,尺寸较大,还得处理不同版本兼容问题,包括io初始化也太繁琐,于是操作原子等 ...
- art-template循环无法显示出数据
art-template循环遍历无法显示数据原因 1.语法问题:循环语句导致的问题 2.插件问题: 用标准语法时循环数据如果引入第一个插件,会导致数据显示不出来只有引入第二个插件才可循环出数据 用原生 ...
- 【Nodejs】375- 如何加快 Node.js 应用的启动速度
我们平时在开发部署 Node.js 应用的过程中,对于应用进程启动的耗时很少有人会关注,大多数的应用 5 分钟左右就可以启动完成,这个过程中会涉及到和集团很多系统的交互,这个耗时看起来也没有什么问题. ...
- 001_Java概述与环境搭建
Java由来: SUN公司开发,95年推出,96年推出JDK1.0版本 09年被Oracle(甲骨文)收购 詹姆斯·高斯林被称作“Java之父” JavaSE:Java Standard Editoi ...
- 基于 HTML5 WebGL 构建智能数字化城市 3D 全景
前言 自 2011 年我国城镇化率首次突破 50% 以来,<新型城镇化发展规划>将智慧城市列为我国城市发展的三大目标之一,并提出到 2020 年,建成一批特色鲜明的智慧城市.截至现今,全国 ...