Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从网页中提取内容_C#_.net_Xpath_Html Parsing_Html Agility Pack - Fatal编程技术网

C# 从网页中提取内容

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真的很陌生,不知道该往哪里

我正在尝试使用HTMLagilitypack从网页中提取所有内容

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]以获取所有具有文本节点的节点。