C# 从网页中提取内容
我正在尝试使用HTMLagilitypack从网页中提取所有内容C# 从网页中提取内容,c#,.net,xpath,html-parsing,html-agility-pack,C#,.net,Xpath,Html Parsing,Html Agility Pack,我正在尝试使用HTMLagilitypack从网页中提取所有内容 foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes("//text()")) { sb.AppendLine(node.Text); } 当我尝试用上面的代码解析google.com时,我得到了很多javascript。我只想提取网页中的内容,就像h或p标签一样。例如,在本页上回答问题、回答、评论并删除所有其他内容 我对XPath真的很陌生,不知道该往哪里
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes("//text()"))
{
sb.AppendLine(node.Text);
}
当我尝试用上面的代码解析google.com时,我得到了很多javascript。我只想提取网页中的内容,就像h或p标签一样。例如,在本页上回答问题、回答、评论并删除所有其他内容
我对XPath真的很陌生,不知道该往哪里走。因此,任何帮助都将不胜感激。您可以按名称筛选不需要的标记,并将其从文档中删除
doc = page.Load("http://www.google.com");
doc.DocumentNode.Descendants().Where(n => n.Name == "script" || n.Name == "style").ToList().ForEach(n => n.Remove());
可以使用以下XPath表达式:
//body//*[local-name() != 'script']/text()
它只接受主体内部的元素并跳过脚本元素这是我不想只选择h1标记的事情。相反,我想从整个页面中选择文本。我不认为我能够涵盖文本提取中所有可能的标记组合。好吧,我遇到的问题是,脚本和样式的innerText也被返回了。因此,删除脚本和样式是必要的,所有的功劳都归于这个家伙,我不熟悉HTMLagilitypack,但从文本节点获取文本听起来很奇怪。您可以尝试选择Nodes/*[text]以获取所有具有文本节点的节点。