C# 正则表达式获取 HTML 标记内容

本文关键字:HTML 正则表达式 获取 | 更新日期: 2023-09-27 18:30:35

这是我的html:

<div class="bla">
    <div>
        bla bla
    </div>
    <div>
        bla bla 2
    </div>
    <p></p>
</div>

我想使用 c# 正则表达式获取class="bla"内容。我试过:

MatchCollection postCollection = Regex.Matches(html, "<div class='"bla'".*?>(.*?)<''/div>");

但它只给了我这部分内容:

<div class="bla">
    <div>
        bla bla
    </div>

一旦第一个div关闭。

C# 正则表达式获取 HTML 标记内容

使用 DOM 解析器,正则表达式不适合这个: https://www.nuget.org/packages/HtmlAgilityPack

但是正如您提到的,页面是在运行时使用 JavaScript 生成的,这不是一个合适的选择。您将需要一个类似浏览器的组件:例如Selenium

在这里你可以找到一些例子:http://scraping.pro/example-of-scraping-with-selenium-webdriver-in-csharp/

正如其他人提到的,你不应该在这种情况下使用正则表达式。但是,这是可能的。

这是我这样做的尝试:
(<div class="bla".*>(['w's<>'/]*)<'/div>)

这肯定需要更多的工作,并且可能有问题,但可能会引导您朝着正确的方向前进。

正则表达式演示:这里