Avatar billede mickni33 Nybegynder
10. april 2010 - 20:43 Der er 18 kommentarer og
1 løsning

httprequest / response

hvordan får man fat på tv information på denne side:
http://tvtid.tv2.dk/allekanaler/

jeg kunnegodt tænke mig at "parse" tv2 fjernsynsprogram ud af et Http request/response, men det er ikke i HTML

er der nogen der har en go ide hvordan det kan lade sig gøre?
Avatar billede Syska Mester
10. april 2010 - 21:20 #1
Siger du at http://tvtid.tv2.dk/allekanaler/ ikke er HTML?

og til at parse html ville jeg bruge: http://htmlagilitypack.codeplex.com/Wikipage
Avatar billede mickni33 Nybegynder
10. april 2010 - 21:35 #2
´det html jeg får tilbage på den side viser ikke noget om hvad der kommer i tv kl 2000... det er det jeg gerne vil finde frem til. ved ikke om programoversigten er javascript eller flash (eller noget tredie)
Avatar billede Syska Mester
10. april 2010 - 21:45 #3
Ahhh, well ... de henter et JSON result:
http://tvtid.tv2.dk/allekanaler/get.php/day-1270886400.html

den sidste del af en timestamp ...
Avatar billede mickni33 Nybegynder
10. april 2010 - 21:47 #4
hov hvor fandt du det henne? :-)
Avatar billede Syska Mester
10. april 2010 - 21:51 #5
FF og Firebug ... :-)

Så kan du se hvad din browser laver og henter :-)

Og svar ...
Avatar billede mickni33 Nybegynder
10. april 2010 - 21:51 #6
hvad skal jeg kigge/crawle efter hvis jeg skal trække info ud af sådan en side med javascript/´flash
Avatar billede Syska Mester
10. april 2010 - 21:58 #7
Kig efter data ... kig på de kald der bliver lavet ... fra den webside.

Der bliver jo både hentet css, gif, jpg, js files ...

dette var så en html fil ...

mvh
Avatar billede mickni33 Nybegynder
10. april 2010 - 22:12 #8
Hvis du nu kigger på html koden for
http://tvtid.tv2.dk/allekanaler

kan du så se hvorhenne jeg kan få dit JSON resultat tilbage?
Avatar billede Syska Mester
10. april 2010 - 22:20 #9
Tror ik' jeg er med ...

Det er ik' mit JSON resultat ... det er tv2's.

Tror du bliver nød til at skræve sidste del ud i pap for mig ... linket har du jo fået ... hvad mere skal du bruge ?

mvh
Avatar billede mickni33 Nybegynder
10. april 2010 - 22:43 #10
jeg skal lave et program som finder frem til JSON resultatet automatisk... og så parse det igennem for dagens program på tv2..

dvs først går jeg ind p¨å tv2.dk, herefter på http://tvtid.tv2.dk/allekanaler og her gik jeg så i stå.... indtil du fandt frem til http://tvtid.tv2.dk/allekanaler/get.php/day-1270886400.html
men her brugte du Firebug... men jeg skal finde frem til det automatisk ved at følge eventuelle links og andet
Avatar billede Syska Mester
10. april 2010 - 23:02 #11
Det mærkelige lange tal er en timestamp:
http://www.onlineconversion.com/unix_time.htm

Det giver 10 April 2010.
Avatar billede Syska Mester
10. april 2010 - 23:04 #12
Skrev også: Skrevet lør. d. 10. april 2010 kl. 21:45:02

At den sidste del var en timestamp ... men hvis man ikke kommer fra php/linux/unix ... så ved man det ikke altid hvad det er :-)

Men jeg er ikke sikker på det er lovligt at tage deres datafeed. Så du skal nok kun bruge det i private apps.

mvh
Avatar billede mickni33 Nybegynder
10. april 2010 - 23:12 #13
äaahh tror du ikk det er lovligt? er det ikk kun hvis man skal ceawle ned på serveren at det er ulovligt?
Avatar billede Syska Mester
10. april 2010 - 23:40 #14
Nej, men du kan sikkert betale dig fra det.

De tjener jo ingen penge på at du stjæler deres datafeed :-)

Hvis du skal bruge det i noget public tilgængeligt, så ville jeg nok maile dem og høre om du må ...

mvh
Avatar billede arne_v Ekspert
11. april 2010 - 04:13 #15
Det vigtigste er nok at få afklaret rettighederne.

Og dine rettigheder afhænger nok en del af om du er ved at skrive en web browser eller en web side der viser TV programmer !!

Men grunden til at jeg bryder ind i en allerede overstået tråd er for at være lidt mere konkret med hensyn til koden.

Til inspiration:

using System;
using System.Collections.Generic;
using System.Net;
using System.Web.Script.Serialization;

namespace E
{
    public class Program
    {
        public int id { get; set; }
        public int pid { get; set; }
        public string end { get; set; }
        public string start { get; set; }
        public int overlap { get; set; }
        public string cat { get; set; }
        public string title { get; set; }
        public string description { get; set; }
    }
    public class DayProgram
    {
        public int id { get; set; }
        public string sort { get; set; }
        public string logo { get; set; }
        public string name { get; set; }
        public string group { get; set; }
        public Program[] programs { get; set; }
    }
    public class Test
    {
        private static long k = (new DateTime(1970, 1, 1, 0, 0, 0) + TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now)).Ticks;
        public static int N2U(DateTime dt)
        {
            return (int)((dt.Ticks - k) / 10000000);
        }
        public static DayProgram[] GetPrograms(DateTime dt)
        {
            DateTime dt2 = dt-TimeZone.CurrentTimeZone.GetUtcOffset(dt);
            WebClient wc = new WebClient();
            string html = wc.DownloadString("http://tvtid.tv2.dk/allekanaler/get.php/day-" + N2U(dt2) + ".html");
            JavaScriptSerializer jss = new JavaScriptSerializer();
            return jss.Deserialize<DayProgram[]>(html);
        }
        public static void Main(string[] args)
        {
            foreach(DayProgram dp in GetPrograms(new DateTime(2010, 4, 10)))
            {
                Console.WriteLine("****" + dp.name + "****");
                foreach(Program p in dp.programs)
                {
                    Console.WriteLine(p.title + " : " + p.start + "-" + p.end);
                }
            }
            Console.ReadKey();
        }
    }
}
Avatar billede mickni33 Nybegynder
11. april 2010 - 18:33 #16
wooooo Arne det ser spændende ud det kode der.. det vil jeg lige kigge på...
Avatar billede madand Nybegynder
14. april 2010 - 15:52 #17
Kunne man ikke også bruge denne kode? :)

private void WipAwayCrawler()
    {
        // Create a request for the URL.
        WebRequest request = WebRequest.Create(
          "http://www.wipaway.dk/default.aspx?User=user&Restnr=1341");
        // If required by the server, set the credentials.
        request.Credentials = CredentialCache.DefaultCredentials;
        //UserAgent.
        ((HttpWebRequest)request).UserAgent = "We keeps crawling y'all muhaha!";
        // Get the response.
        WebResponse response = request.GetResponse();
        // Display the status.
        Console.WriteLine("Sidens response: " + ((HttpWebResponse)response).StatusDescription);
        // Get the stream containing content returned by the server.
        Stream dataStream = response.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);
        // Read the content.
        string responseFromServer = reader.ReadToEnd();
        // Display the content.
        Response.Write(responseFromServer.Substring(0, responseFromServer.LastIndexOf(' ', 260)));
        // Clean up the streams and the response.
        reader.Close();
        response.Close();
    }
Avatar billede madand Nybegynder
14. april 2010 - 15:53 #18
Brugte jeg til at crawle vores menu i kantinen :D
Avatar billede arne_v Ekspert
14. april 2010 - 16:05 #19
(Http)WebRequest kan sagtens bruges i.s.f. WebClient.

WebClient er bare lidt nemmere.

Fordelen ved (Http)WebRequest er at man kan styre en masse ting.
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