如何从<p> HTML标签中提取内容[重复]

Posted

技术标签:

【中文标题】如何从<p> HTML标签中提取内容[重复]【英文标题】:How to extract content from <p> HTML tag [duplicate] 【发布时间】:2019-09-26 17:43:15 【问题描述】:

我有以下 html 作为输入:

<p>Hello</p>
<p>How are you?</p>
<div>Hello again</div>

我怎样才能只输出“Hello”? (仅来自第一个 p-tag 的内容)。并且我怎样才能只访问第二个 p-tag 内容?

所以输出应该是:

string p1 = "Hello"
string p2 = "How are you?"

到目前为止我的代码。完全错误!!!救命!

using System.Text.RegularExpressions;
string p1 = Regex.Match("<p>(.*?)</p>"[0], myString);
string p2 = Regex.Match("<p>(.*?)</p>"[1], myString);

【问题讨论】:

我看了看,但没有告诉我如何具体访问哪个标签 为什么要对 HTML 文档进行正则表达式?即使使用基本的HtmlDocument 类(例如GetElementsByTagName),你也有很多工具可以做到这一点。或获取HtmlAgilityPack。 我在一家小餐馆当厨师。我不是程序员。我只是想解决这个小问题。我不知道我还能怎么做 你交换了正则表达式和输入字符串。 Regex.Match(myString, "(?s)&lt;p&gt;(.*?)&lt;/p&gt;").Groups[1].Value。要真正解析 HTML,你必须学习一些编程,否则从长远来看你会失败。 听听人们在告诉你什么。 RegEx不是解析 HTML 的好工具。有更好的库,例如 HtmlAgilityPack,可以使这项工作变得更容易,并且代码会更好地工作。即使具有基本的编码技能,这些也应该相当容易学习.. 【参考方案1】:

您可以为每个元素添加一个 id="yourID" 然后像这样进行选择:

javascript

let p1 = document.getElementById("element1").value 

HTML:

<p id="element1"> </p>

【讨论】:

【参考方案2】:

我想你可能正在寻找这样的东西:

Regex r = new Regex("<p>(.*?)<\\/p>");
string p1 = r.Matches(myString)[0].Groups[1].Value;
string p2 = r.Matches(myString)[1].Groups[1].Value;

输出如下:

Hello
How are you?

请记住,虽然这不是最安全的方法,但迭代结果可能有助于牢记前进:

foreach (Match m in r.Matches(myString))

    Console.WriteLine(m.Groups[1].Value);

【讨论】:

以上是关于如何从<p> HTML标签中提取内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 如何从mysql 一个字段中提取内容并过滤所有HTML代码,然後存入另一个字段内?

从 HTML 正文中提取文本片段(在 .NET 中)

正则表达式 提取 html 标签的内容

如何从php中的字符串获取html标签?

如何从脚本标签中提取字符串数据,其中脚本没有任何 id?

如何提取<td>标签中的内容