Avatar billede bertelsenbo Nybegynder
10. juli 2008 - 16:53 Der er 4 kommentarer og
1 løsning

Kan man hente en html-tabel fra ekstern side?

Hej Eksperter,

Jeg ville høre om det var muligt i asp.NET at requeste en html-tabel fra en ekstern side, der strukturelt næsten altid er ens, det er kun indholdet der varierer.

Og kan man loade dette indhold ind i et array af en slags.

F.eks. hente en tabel fra ("Den meget lille tabel"):
http://www.html.dk/dokumentation/html4/tags/table/

og få den ind i en asp-tabel eller et array så man selv kan redigere den, og feks. ændre rækkefølge eller skjule rækker/kolonner/felter.
Avatar billede arne_v Ekspert
10. juli 2008 - 17:14 #1
(Http)WebRequest eller WebClient klassen kan hente en web side.

Og saa kan man hente det relevante ud enten med regex eller med string index of og substring.
Avatar billede aaberg Nybegynder
17. juli 2008 - 14:09 #2
Følgende kode henter "Den meget lille tabel" ud fra siden, og viser på et GridView i ASP.NET. Koden er i C#. Først bliver hele den eksterne hjemmeside downloadet med en instans af WebClient klassen, og gemt i en lokal fil (Her bør du nok ændre filnavnet på en lokale fil). Derefter bruges en OleDbConnection som bruger Microsoft.Jet.4.0 provideren, til at køre SQL imod den valgte tabel (Utroligt, men det virker faktisk!!). Til sidst bliver resultatet vist i en GridView.

WebClient webClient = new WebClient();
string htmlStr = webClient.DownloadString("http://www.html.dk/dokumentation/html4/tags/table/");
FileStream localHtmlFileStream = new FileStream(@"c:\temp\test.html", FileMode.Create);
StreamWriter writer = new StreamWriter(localHtmlFileStream);
writer.Write(htmlStr);
writer.Flush();
writer.Close();

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;HTML Import;HDR=YES;IMEX=1;DATABASE=c:\temp\test.html");
OleDbCommand command = connection.CreateCommand();
command.CommandText = "select * from [Den meget lille tabel]";

OleDbDataAdapter adapt = new OleDbDataAdapter(command);
DataTable dt = new DataTable();
adapt.Fill(dt);

this.GridView1.DataSource = dt;
this.GridView1.DataBind();
Avatar billede bertelsenbo Nybegynder
20. juli 2008 - 17:51 #3
Jeg har desværre ikke tid til at efterprøve dette, så jeg tror på dig, og tak for hjælpen.
Svar for point :-)
Avatar billede aaberg Nybegynder
21. juli 2008 - 07:55 #4
Svar :-)
Avatar billede slapstick Nybegynder
07. oktober 2008 - 12:43 #5
det virker kun hvis tabellen har en caption
dvs ikke særlig brugbart til feks screenscraping hvor man ikke selv har defineret table
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