例如,我想从http://www.urbandictionary.com/define.php?term=potato中提取第一个定义。不过,它是原始文本。
var html = new HtmlDocument();
html.LoadHtml(new WebClient().DownloadString("http://www.urbandictionary.com/define.php?term=potato"));
var root = html.DocumentNode;
var p = root.Descendants()
.Where(n => n.GetAttributeValue("class", "").Equals("meaning"))
.Single()
.Descendants("")
.Single();
var content = p.InnerText;
这是我用来尝试提取含义类的代码。这根本不起作用,但是......如何从Urban Dictionary中提取课程?
答案 0 :(得分:0)
如果您更改以下代码,则可以使用
var html = new HtmlDocument();
html.LoadHtml(new WebClient().DownloadString("http://www.urbandictionary.com/define.php?term=potato"));
var root = html.DocumentNode;
var p = root.SelectNodes("//div[@class='meaning']").First();
var content = p.InnerText;
我在SelectNodes
中使用的文字是XPath,表示所有div
个元素,其中的类名为meaning
。您需要使用First
或FirstOrDefault
,因为该网页包含多个具有该类名称的div
元素,因此Single
会引发异常。
答案 1 :(得分:0)
或者你可以使用,如果你想使用相同的"风格"作为你正在使用的链接。
var p = root.Descendants()
.Where(n => n.GetAttributeValue("class", "").Equals("meaning"))
.FirstOrDefault();
虽然Tone的答案更优雅,但一个衬垫通常更好。