如何从<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)<p>(.*?)</p>").Groups[1].Value
。要真正解析 HTML,你必须学习一些编程,否则从长远来看你会失败。
听听人们在告诉你什么。 RegEx不是解析 HTML 的好工具。有更好的库,例如 HtmlAgilityPack,可以使这项工作变得更容易,并且代码会更好地工作。即使具有基本的编码技能,这些也应该相当容易学习..
【参考方案1】:
您可以为每个元素添加一个 id="yourID" 然后像这样进行选择:
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标签中提取内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章