Avatar billede doomstone-dk- Nybegynder
23. juli 2007 - 16:53 Der er 9 kommentarer og
1 løsning

Hent et id ud af en html side

Hejsa, jeg er igang med at øver mig i C# :D er rimelig ny :D
Men det jeg har tængte mig at lave er en damage simulator for mages i wow :D
har dog 1 problem.
Brugern Skriver f.eks. navnet ind på sit head item, "Wicked Witch's Hat".
Her kommer det svære :D for først skal programmet få ind på
http://wow.allakhazam.com/ihtml?Wicked%20Witch's%20Hat
og hente "28586" altså itemets id. Det findes i det nedereste link på siden.
"</div><div class="credit">Source: <a class="credit" href="/item.html?witem=28586">wow.allakhazam.com</a></div></body></html>"

En der kan hjælpe mig med et lille script som kan hente dette item id ud?
btw mit item navn ligger i "itemname" :D
Avatar billede kalp Novice
23. juli 2007 - 18:02 #1
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient client = new WebClient();
            string download = client.DownloadString("http://wow.allakhazam.com/ihtml?Wicked%20Witch's%20Hat");
            Regex pattern = new Regex("witem=.*\">");
            download = pattern.Match(download).Value;
            download = download.Replace("witem=","").Replace("\">","").Trim();

        }
    }
}
Avatar billede kalp Novice
23. juli 2007 - 18:02 #2
og det er grimt.. men det kræver egentlig bare en bedre regexp..


well.. it works!

download ender med at være dit id.
Avatar billede kalp Novice
23. juli 2007 - 18:42 #3
den her er lidt pænerer

  WebClient client = new WebClient();
            string download = client.DownloadString("http://wow.allakhazam.com/ihtml?Wicked%20Witch's%20Hat");
            Regex pattern = new Regex("[^[a-zA-z=]+[0-9]+");
            download = pattern.Matches(download)[pattern.Matches(download).Count - 1].Value;
           

men stadig.. det er muligt, at hive kun den bid ud man vil have..
men det her er sikkert fint til dit formål.
Avatar billede md_craig Nybegynder
23. juli 2007 - 23:18 #4
http://wow.allakhazam.com/cluster/item-xml.pl?witem=28586

Det er lidt nemmere at arbejde med XML IMO
Avatar billede kalp Novice
23. juli 2007 - 23:25 #5
md_craig >> HELT enig! jeg kender dog ikke til spillet og derfor vidste jeg ikke der var xml til det:)

så skal koden se sådan ud!


using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.Xml;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient downloader = new WebClient();
            XmlDocument document = new XmlDocument();
            document.LoadXml(downloader.DownloadString("http://wow.allakhazam.com/cluster/item-xml.pl?witem=28586"));
            string itemid = document.SelectSingleNode("/wowitem/itemid").InnerText;
        }
    }
}
Avatar billede doomstone-dk- Nybegynder
24. juli 2007 - 23:23 #6
Har ikke lige har tid til at se på det endnu, men håber jeg får imorgen.
Grunden til at jeg ikke går direkte ind og tager id fra xlm siden, er fordi min bruger kun skriver navnet ind på det item han har på.
så skal mit program så først gå ind og finde dens id og der efter helte xml dataen.
Hvis det kan gøres smarter må i godt sige til :D
Avatar billede md_craig Nybegynder
25. juli 2007 - 01:09 #7
Well det var mere når du først havde fat i ID'et...

Ellers kunne det være du skulle kigge på The Armory, der er alt som sådan i XML... man skal bare lige bilde den ind i sit request at ens browser er XML Capable, (det gør du i din kode)...

Jeg har prøvet at lurer lidt rundt dog, og har ikke kunne finde frem til hvordan man fik det sidste skridt til at virke også med the armory. men var måske en undersøgelse værd...
Avatar billede doomstone-dk- Nybegynder
25. juli 2007 - 17:48 #8
Jeg får fjelne
Error    1    The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\doomstone\My Documents\Visual Studio 2005\Projects\WoWdmgSim\WoWdmgSim\wowdmgsim.cs    38    13    WoWdmgSim
Error    2    The type or namespace name 'WebClient' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\doomstone\My Documents\Visual Studio 2005\Projects\WoWdmgSim\WoWdmgSim\wowdmgsim.cs    38    36    WoWdmgSim
Error    3    The type or namespace name 'Regex' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\doomstone\My Documents\Visual Studio 2005\Projects\WoWdmgSim\WoWdmgSim\wowdmgsim.cs    40    13    WoWdmgSim
Error    4    The type or namespace name 'Regex' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\doomstone\My Documents\Visual Studio 2005\Projects\WoWdmgSim\WoWdmgSim\wowdmgsim.cs    40    33    WoWdmgSim

Ser ud til at jeg mangler en extention? har tilføjet "using System.Net;" men det virker åbenbar ikke
Avatar billede kalp Novice
25. juli 2007 - 17:52 #9
det kræver .NET 2.0
Avatar billede doomstone-dk- Nybegynder
25. juli 2007 - 18:02 #10
Ja fandt fand ud afdordi jeg har tilføjet using Syatem.Net; i den forkerte fil :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester