在这里,我试图从HTML页面中提取一个单词。
例如,有两个文本框(1和2)。现在,我试图在textbox1上给出stackoverflow问题ID,并在textbox2上获得“询问”值。
例如,如果我在textbox1上输入36,则应该在textbox2上输入“ 9年,4个月前”。
WebClient webpage = new WebClient();String html = webpage.DownloadString("https://stackoverflow.com/questions/" + textBox1.Text);MatchCollection match = Regex.Matches(html, FILTERHERE, RegexOptions.Singleline);
问题是我不知道如何过滤我的输出(FILTERHERE)?
另外,如何将输出发送到textbox2?

最佳答案

使用HtmlAgilityPack

string url = "https://stackoverflow.com/questions/";
var web = new HtmlWeb();
var doc = web.Load(url + textBox1.Text); //the text is "36"
var tag = doc.DocumentNode.SelectSingleNode("//*[@id='qinfo']//td[./p[@class='label-key' and text()='asked']]/following-sibling::td//b");
textBox2.Text = tag.InnerText;


如果您不了解XPath,则有适用于Chrome和Firefox的浏览器扩展程序,可以为您获取任何Html标记的XPath(我亲自手工编写它们,以使它们对页面结构的更改不太敏感)。

10-06 09:50