使用HtmlElement从网页获取数据?

时间:2014-04-17 00:06:56

标签: c# winforms loops web

我试图将游戏网站的数据导入我的winforms应用程序。我想要撤消数据的页面是:http://www.tibia.com/community/?subtopic=characters&name=Eternal+Oblivion

我的winforms程序有一个连接到webbrowser的搜索栏。在这个搜索栏中,我可以输入一个名称,例如游戏角色名称" Eternal Oblivion"。当我点击搜索时,它会转到该页面(例如:http://www.tibia.com/community/?subtopic=characters&name=Eternal+Oblivion)。

在我的winforms应用程序中,我有一个包含Name,Sex,Vocation,Level的表。只有那些4(开始) - 它基本上是他的个人资料页面的副本。但是如何将数据输入我的程序?我希望它在我的程序中看起来像这样:

Name: Eternal Oblivion
Sex: Male
Vocation: Knight
Level: 297

这是我目前正在使用的代码,但它不起作用。似乎是一个棘手的因为网站没有在表标签上使用任何类似的样式名称或w / e。为什么没有bgcolor工作?此外,我的代码不会起作用,因为它只会在颜色A上重复同样的事情而在颜色B上重复相同的事情。但正如您在网站上看到的那样,http://www.tibia.com/community/?subtopic=characters&name=Eternal+Oblivion每两行都有颜色。我该怎么做?

if (this.browser.ReadyState == WebBrowserReadyState.Complete)
            {
                foreach (HtmlElement cell in this.browser.Document.GetElementsByTagName("tr"))
                {
                    string cls = cell.GetAttribute("bgcolor");
                    if (cls.StartsWith("#F1E0C6"))
                    {
                        dynamic oldname = cell.InnerText;
                        string[] strings = oldname.Split('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
                        string charnameonly = strings[1];
                        labelName.Text = charnameonly.ToString();
                    }
                    else if (cls.StartsWith("#D4C0A1"))
                    {
                        dynamic oldsex = cell.InnerText;
                        string[] strings = oldsex.Split('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
                        string charsexonly = strings[1];
                        labelSex.Text = charsexonly.ToString();
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

我会尝试不同的方法。在String中获得页面的HTML代码后,根据您要查找的内容进行拆分。例如,要获取角色名称:

string name = htmlCode
     .Split(new string[] {"Name:"}, StringSplitOptions.RemoveEmptyEntries)[1]
     .Split('>')[2]
     .Split('<')[0];

不干净且不错,但是对于您正在寻找的所有其他值都有效并且会做同样的事情,只需更改&#34;名称:&#34;为&#34;性别:&#34;,&#34;职业:&#34;等...