Gå til innhold

hente tvguden inn i mitt delphi program.


Anbefalte innlegg

jeg kunne teke meg å lage et program som forlsår når jeg skal se de forskelige tvprgrammen for å få meg mest mulig av dem.

 

for å slippe å taste inn all informasjonen manuelt så kunne jeg tenke meg en metode for å hente det fra intenet.

er det noen som ser hvordan man kan gjøre det ? .

 

programmet skal selfølgelig komme med forslag etter mine kreterier.

filmer og tv-programer skal merkes med merke laper som action,sci-fi, dra osv.

i danne databsen som programet styre skal mest mulig om tvpgramenet som har med sende tiden lagres.

 

hvilket format bruker tvgudene på internet ?

Endret av elg-elg123
Lenke til kommentar
Videoannonse
Annonse

Da gjelder det å finne ut av hvordan oversikten er bygd opp.

rekefølgen av de forskjelige oplysningen :

programts navn , orginal tittel, sendetid : dato , start , slut eller lengde og hvor mange merkelapper prgramet har ( f.eks aktion film) om det har blit sendt før hvi det er merket som reprise.

 

jeg siter å venter på at jeg skal få meg bredband. tror ikke jeg bruker så mye tid på min "tvgude" før bredbanet er på plass .

 

problemt blir antagelig å konvertere html koden til ren tekst eller et annet format som passer bedre til mit bruk.

 

 

Foresten . jeg vet ikke helt hvordan jeg få til å hente oplysningen fra de rette sidene

hvis jeg bruker en knapp i delphi som opdaterer databasen.

Det er progrmsnuten jeg er usikker på.

Endret av elg-elg123
Lenke til kommentar

Det du må gjøre er å sile ut taggene i HTMLkoden, slik at teksten blir igjen.

 

Eks.:

<B>Dette er en fet tekst</B>

1)

Fjern den første taggen:

Delete (Tagtekst, 1, 3);

2)

Fjern den siste taggen:

Delete (Tagtekst, Pos ('<', Tagtekst), Length (Tagtekst));

 

Tilbake står du med teksten:

Dette er en fet tekst

 

Slik må du gjøre med alle typer tagger som finner i den gitte HTML-teksten i TV-guiden. Deretter leter programmet etter spesielle clues som angir klokkeslett og programtittel osv.

 

For å laste ned en HTML-side fra nettet bør du bruke Indy's HTTP-klient (komponent), eksempelvis.

Endret av tasle
Lenke til kommentar

sile ut html kode skulle gå grei så fremt jeg kalrer å lere meg dem . er det mange koder ? kansje dere vet om en oversikt på nettet.

 

er indy's HTTP-klient gratis ? hvis nei finnes det en komponet som er gratis ?

 

I delphi 5 var det gankelt å byfgge opp en database hved hjelp av tabeller men tabellen forsvant i delphi 6 ( tror jeg ) . de er i hvertfal ikke der i versjon 7. pe.

 

er det noen som er gode på Ddclient... og Ddeserver...

 

jeg er så tilig i planleggingen at jeg ikke har bestemt meg helt hvordan jeg vil bygge opp "tabellene" og samenhengen mellom dem

Lenke til kommentar

Det er en hel drøss av forskjellige tags. http://werbach.com/barebones/no/barebones_no.html er en grei overikt over taggene. Men du slipper nok å implementere alle disse, for det er langt fra alle websider som bruker samtlige tags, heldigvis.

 

Indy er et gratis sett komponenter som dekker det meste av Internett-relaterte oppgaver, enten det er servere eller på klientsiden. De kan lastes gratis ned fra http://www.indyproject.org/ og installeres i Delphi.

 

Databaser i Delphi gjelder nok kun i versjonene Professional og oppover. Men du finner sikkert en eller flere gratis databasekomponenter på nettet, som kan brukes/installeres. Også for mySQL, bl.a.

 

Når du skal lage et databaseprogram, så får du relasjonen "en TV-kanal har mange programmer" (en-til-mange relasjon), så det burde gå veldig greit. Du trenger bare to tabeller: en tabell for TV-kanalene, og den andre for alle programmene.

Lenke til kommentar

takk for helpen så langt.

det blir nok enda en stund før jeg begynner med "tvguden" min.

 

jeg blir nødt til å teste ut en elle anen database først .

-----------------------------------------------------------------------------------

nå har jeg lastet ned gratisversjonen av absolut database og prøvd å instalare den, men delphi versjoen mein finnerhvis ikke alle filene.

 

I følge tekstfilen som følger med skal AD. instalres uten at delphi kjører .

det fungert grei men nå delphi startes opp får jeg en feilmelding om noen filer programet ikke finner.

 

man kunne også legge AD inn som en egen pakke. jeg prøvde det også men fortsat var det noen filer delphi ikke fant.

Endret av elg-elg123
Lenke til kommentar
  • 3 uker senere...

For deg, og alle andre, som skal rippe data fra diverse html-sider kan jeg kun anbefale en ting: Regular Expressions

 

Følg tutorial på regular-expressions.info og last ned en prøveversjon på RegexBuddy fra RegexBuddy så er du i gang.

 

Skill ut søkestrengene i en egen fil så blir det superenkelt å tilpasse programmet dersom sidene du ripper plutselig endrer struktur, eller du rett og slett ønsker å hente data fra en helt annen side en dag.

 

-Vegar

Lenke til kommentar
et filter program alså ?

 

Er ikke helt sikker på hva du legger i 'filter progam', men det er bare en alternativ fremgangsmåte til det andre her foreslår.

 

Steg 1: Laste ned htmlside

Steg 2: Plukke ut ønsket informasjon.

 

Steg 1 vil være likt for begge fremgangsmåter.

Steg 2 vil være forskjellig. Endten parser man siden vha en html-parser. Da hopper man fra html-tag til html-tag til man er der man vet det er info man er ute etter. Så plukker man med seg den teksten man vil ha før man hopper videre til neste tag osv osv.

Eller man søker igjennom siden etter noe man vet er der vha regular expressions.

 

Ta f.eks. dagbladet.no sin utskriftsvennlige tv-oversikt: http://fredag.dagbladet.no/tv/print.html Den inneholder dagens program for seks kanaler. Jeg ville da bruke regular expresions på følgende måte (saudokode...)

const KanalRegex = '<div class="tv">.*?<img .*?title="(?P<Kanal>.*?)".*?>(?P<Programmer>.*?)</div>';
const ProgamRegex = '<b.*?>(?<tid>[.:\d]*?)</b>(?<tittel>[^<]*)';

regex.regex = KanalRegex;
regex.subject = htmlbuffer;

while regex.match do
 kanal = regex.NamesSubExpression("Kanal");
 regex2.regex = ProgamRegex;
 regex2.subject = regex.NamedSubExpression("Programmer");
 while regex2.match do
   klokka = regex.NamedSubExpression("tid");
   progam = regex.NamedSubExpression("tittel");
 end;
end;

Og bytter du ut de to søkeuttrykkene jeg har brukt med to andre kan du plutselig bruke tv-oversikten fra f.eks. vg i stede:

const KanalRegex = '<img[^<>]*?title="(?P<Kanal>.*?)-.*?">.*?</table>(?P<Programmer>.*?)</table>';
const ProgamRegex = '<td[^>]*?>[\s]*?(?P<tid>[\d][\d]:[\d][\d]).*?<a[^>].*?>(?P<tittel>.*?)</a>';

Ser antakelig ganske kryptisk ut, men bruker du litt tid på regular expressions og laster ned TPerlRegEx fra regular-expressions.info vil du snart se at dette er en langt langt mer fleksibel metode enn bruk av en html-parser.

-Vegar

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...