当前位置: 首页 > 编程笔记 >

C#基于正则表达式抓取a标签链接和innerhtml的方法

龙永福
2023-03-14
本文向大家介绍C#基于正则表达式抓取a标签链接和innerhtml的方法,包括了C#基于正则表达式抓取a标签链接和innerhtml的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#基于正则表达式抓取a标签链接和innerhtml的方法。分享给大家供大家参考,具体如下:

//读取网页html
string text = File.ReadAllText(Environment.CurrentDirectory + "//test.txt", Encoding.GetEncoding("gb2312"));
string prttern = "<a(\\s+(href=\"(?<url>([^\"])*)\"|'([^'])*'|\\w+=\"(([^\"])*)\"|'([^'])*'))+>(?<text>(.*?))</a>";
var maths = Regex.Matches(text, prttern);
//抓取出来写入的文件
using (FileStream w = new FileStream(Environment.CurrentDirectory + "//wirter.txt", FileMode.Create))
{
    for (int i = 0; i < maths.Count; i++)
    {
      byte[] bs = Encoding.UTF8.GetBytes(string.Format("链接地址:{0},  innerhtml:{1}", maths[i].Groups["url"].Value,
        maths[i].Groups["text"].Value) + "\r\n");
      w.Write(bs, 0, bs.Length);
      Console.WriteLine();
    }
}
Console.ReadKey();

图解正则

朋友需要截取img标签的src 和data-url   跟上面差不多。。顺便附上

string text =File.ReadAllText(Environment.CurrentDirectory + "//test.txt", Encoding.GetEncoding("gb2312"));
string prttern = "<img(\\s*(src=\"(?<src>[^\"]*?)\"|data-url=\"(?<dataurl>[^\"]*?)\"|[-\\w]+=\"[^\"]*?\"))*\\s*/>";
var maths = Regex.Matches(text, prttern);
//抓取出来写入的文件
using (FileStream w = new FileStream(Environment.CurrentDirectory + "//wirter.txt", FileMode.Create))
{
    for (int i = 0; i < maths.Count; i++)
    {
      byte[] bs = Encoding.UTF8.GetBytes(string.Format("图片src:{0},  图片data-url:{1}", maths[i].Groups["src"].Value,
        maths[i].Groups["dataurl"].Value) + "\r\n");
      w.Write(bs, 0, bs.Length);
      Console.WriteLine();
    }
}

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#正则表达式用法总结》、《C#编码操作技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

 类似资料:
  • 问题内容: 这是我的正则表达式,可以很好地匹配字符串中的链接。但是我不希望它选择每个链接。如果链接位于链接之前或之后,则不应对该链接进行数学计算。怎么做到呢? 这些应匹配: 这些不应该匹配: 为什么需要这个?:我希望每个链接都可以单击,即使它不在锚标记之间也是如此。 问题答案: 关于使用正则表达式解析html的所有免责声明,如果您想对这个任务使用正则表达式,则可以使用: 交替匹配的左侧 完成,然后

  • 问题内容: 我正在尝试提取锚标记()的属性。到目前为止,我有这个表达: 适用于像 和(单引号) 但不适用于不带引号的字符串: 如何修改我的正则表达式,使其与不带引号的属性一起使用?还是有更好的方法来做到这一点? 更新: 谢谢您到目前为止的所有好评和建议。 我没有提到一件事:很遗憾,我必须修补/修改不是由我编写的代码。而且没有时间/金钱从头开始重写这些东西。 问题答案: 如果你有一个像 此正则表达式

  • 本文向大家介绍PHP正则表达式抓取某个标签的特定属性值的方法,包括了PHP正则表达式抓取某个标签的特定属性值的方法的使用技巧和注意事项,需要的朋友参考一下 php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码。 下面随便给出一个例子 输出结果为 查看源码可以看到 第一次写blog好紧张哈哈哈,希望会对大家有

  • 正则表达式是一种可以和输入文本相匹配的表达式。.Net framework 提供了一个正则表达式引擎让这种匹配成为可能。一个表达式可以由一个或多个字符,运算符,或结构体组成。 构建正则表达式的定义 有很多种类的字符,运算符,结构体可以定义正则表达式。 转义字符 字符类 集合 分组构造 限定符 回溯引用构造 可替换结构 替换 混合结构 Regex 正则表达式类 Regex 类用于表示一个正则表达式。

  • 问题内容: 我正在寻找一个.NET正则表达式来提取网页中的所有URL,但是还没有找到一个足以涵盖指定链接的所有不同方式的URL。 还有一个问题: 是否有 一个正则表达式可以统治所有人 ?还是我最好使用一系列不那么复杂的正则表达式,而只对原始HTML使用多重传递?(速度与可维护性) 问题答案: ((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+) 我从regexlib

  • 问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服