如果可以从使用标准化布局组织的网站读取信息,则意味着网站的控件/文本框/按钮等始终位于同一位置,但其所持有的数据/值会发生变化。
在C#WinForm应用程序中,我可以在后台打开该页面读取一些值并使用我的表单中的那些值吗?有没有办法在网页上引用特定的区域/项目,即使它只是标签效率低12倍?我完全在这里做梦吗?
同样,我不需要点击页面上的某些内容,只需阅读某个文本框中的内容或那种性质的内容。
答案 0 :(得分:6)
Html Agility Pack是做这种事情的热门选择。
答案 1 :(得分:4)
您也可以使用webbrowser控件执行此操作。要获得此主题中的所有海报及其声誉,您可以这样做:
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
webBrowser1.Navigate("http://stackoverflow.com/questions/9712699/read-website-information-display-application");
}
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
foreach (HtmlElement ele in webBrowser1.Document.GetElementsByTagName("SPAN"))
{
if (ele.GetAttribute("title") == "reputation score")
{
MessageBox.Show(ele.Parent.Children[0].InnerText + " - "+ ele.InnerHtml);
}
}
}
答案 2 :(得分:1)
当然,你可以这样做。确切的实现可能会根据网页,布局等进行更改。
作为基本/简单概述:使用WebClient
将网页检索为字符串,然后使用Regex
读取匹配的HTML部分。像“点击标签x次”这样的东西不起作用,实现起来相当困难或复杂,因为您必须自己嵌入浏览器控件或解析HTML。