Toon posts:

[C#/.NET] IMDB Parsing [C#/.NET]

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste mede Tweakers,

Ik ben van plan een applicatie te maken om hier vervolgens weer wat te spelen met C# en alle mogelijkheden die het bied. Nou leek het me leuk om een Applicatie te maken die bepaalde dingen met Film info doet aan de hand van de 'o-so-great' IMDB database. Denk aan het opvragen van:
- Cover, Jaar, acteurs, verhaal en dergelijke

Hier wil ik uiteindelijk een XML bestand van maken voor een kleine mobiele variant met hierin mijn films ;)

Nou zijn er naar mijn idee 3 manieren om hier het beste data vandaan te halen.
- Query uitvoeren op de IMDB database en met WebClient.DownloadData(url); de HTML pagina te parsen
- Of door middel van een 3rth party API: zie link
- Of door de door IMDB geleverder Interfaces (dit zou ik als laatste optie kiezen i.v.m. updates).

Is er iemand die mij hier bepaalde Do's en Dont's willen meegeven of iemand die al ervaring hiermee heeft? Het wordt namelijk wel een project waar ik wat tijd voor wil uitrekken en zou graag "professioneel" advies hiervoor willen hebben.

Alle info m.b.t. mijn vraag is zeer welkom _/-\o_

Vincent

[ Voor 5% gewijzigd door Verwijderd op 13-02-2009 22:49 ]


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
volgens mij zijn de api's van IMDB backwards compatible, dus waarom je dat als laatste optie zou kiezen snap ik niet. De website kan veel makkelijker veranderen, en zou daarom het onbetrouwbaarst zijn.

3th party app's zijn vies en doen vaak net niet wat je wilt. Ik zou dus mooi de interfaces gebruiken.. want, daar zijn interfaces's nou eenmaal voor gemaakt.
:)

[ Voor 3% gewijzigd door BasieP op 13-02-2009 23:02 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Ciqniz
  • Registratie: Oktober 2002
  • Laatst online: 07-09-2023

Ciqniz

On the move...

BasieP schreef op vrijdag 13 februari 2009 @ 23:02:
volgens mij zijn de api's van IMDB backwards compatible, dus waarom je dat als laatste optie zou kiezen snap ik niet. De website kan veel makkelijker veranderen, en zou daarom het onbetrouwbaarst zijn.

3th party app's zijn vies en doen vaak net niet wat je wilt. Ik zou dus mooi de interfaces gebruiken.. want, daar zijn interfaces's nou eenmaal voor gemaakt.
:)
De "API's" van IMDB zijn geen API's. Het zijn gewoon grote textfiles... Niet echt handig dus.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik weet niet precies wat IMDB zelf aanlevert, maar daar zou ik zeker eerst naar kijken. Ook al zijn het gewoon text files, die zijn waarschijnlijk makkelijker te parsen dan de HTML, aangezien die waarschijnlijk nog wel eens zal veranderen.

Ik snap ook niet wat je precies bedoelt met
(dit zou ik als laatste optie kiezen i.v.m. updates)
Als ze zelf een interface aanbieden lijkt me dat het niet zo snel veranderd.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Verwijderd schreef op vrijdag 13 februari 2009 @ 22:47:
Beste mede Tweakers,

Ik ben van plan een applicatie te maken om hier vervolgens weer wat te spelen met C# en alle mogelijkheden die het bied. Nou leek het me leuk om een Applicatie te maken die bepaalde dingen met Film info doet aan de hand van de 'o-so-great' IMDB database. Denk aan het opvragen van:
- Cover, Jaar, acteurs, verhaal en dergelijke

Hier wil ik uiteindelijk een XML bestand van maken voor een kleine mobiele variant met hierin mijn films ;)

Nou zijn er naar mijn idee 3 manieren om hier het beste data vandaan te halen.
- Query uitvoeren op de IMDB database en met WebClient.DownloadData(url); de HTML pagina te parsen
- Of door middel van een 3rth party API: zie link
- Of door de door IMDB geleverder Interfaces (dit zou ik als laatste optie kiezen i.v.m. updates).

Is er iemand die mij hier bepaalde Do's en Dont's willen meegeven of iemand die al ervaring hiermee heeft? Het wordt namelijk wel een project waar ik wat tijd voor wil uitrekken en zou graag "professioneel" advies hiervoor willen hebben.

Alle info m.b.t. mijn vraag is zeer welkom _/-\o_

Vincent
Aangezien IMDB ontzettend vaak veranderd zou ik geen API's gebruiken van derden, dan ben je altijd afhankelijk van derden.

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Woy schreef op zaterdag 14 februari 2009 @ 09:15:
Ik weet niet precies wat IMDB zelf aanlevert, maar daar zou ik zeker eerst naar kijken. Ook al zijn het gewoon text files, die zijn waarschijnlijk makkelijker te parsen dan de HTML, aangezien die waarschijnlijk nog wel eens zal veranderen.

Ik snap ook niet wat je precies bedoelt met

[...]

Als ze zelf een interface aanbieden lijkt me dat het niet zo snel veranderd.
Ik was zelf al naar mening geen HTML te gaan parsen, en 3rth party API's zijn meestal ook niet de oplossing dus ik denk dat ik toch de interface van IMDB moet gebruiken alhoewel ik er nog niet helemaal achter ben hoe ik deze het beste kan gebruiken. IMDB zelf levert grote .list bestanden > zie link

Als ik hierin film titels wil zoeken moet ik deze eerst Downloaden > uitpakken > inlezen... deze list is een 16M bestand (en dan krijg ik alleen film titels). Dus deze is dan ook constant out-of-date tenzij ik deze elke dag weer opnieuw download > uitpak > inlees.

Vandaar dat ik ook echt op zoek ben naar iemand die hier al ervaring mee heeft en mij tips wil geven op dit gebied. O-)

Vincent

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Het downloaden van de complete database is ook niet echt een mooie optie als je vaak de updates wilt verwerken.

Als je echt per item de gegevens wilt weten zou ik dan toch kijken naar het parsen van de HTML, aangezien dat blijkbaar de enige optie is om direct bij IMDB de gegevens van een specifieke film op te vragen.

De 3rd party web-services zullen dan ook of de complete Database downloaden, of gewoon aan de achterkant de HTML parsen ( Of ze hebben een andere manier om aan de data te komen ).

Maar zijn er dan zo veel wijzigingen dat je elke dag de complete database moet downloaden? Zou je er niet mee kunnen voldoen om dat bijvoorbeeld één maal per maand automatisch te laten doen?

[ Voor 9% gewijzigd door Woy op 14-02-2009 11:24 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het elke keer downloaden van de database is naar mijn mening geen optie en ik ga dus kijken of ik het via HTML krijg geparsed. Ik wil graag mijn database up-to-date hebben i.v.m. nieuwe films die op me Media Center staan, nou is 1x per week een update ook geen ramp natuurlijk dus hier moet ik toch nog maar eens over gaan denken.

OT:Mijn non-permanente groet is een gewoonte (welke ik bij deze maar eens afleer dan :P ) ik vind een naam onder een bericht net wat "persoonlijker" dan een Nick O-)

Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Als je naar screenscraping (= het parsen van html) gaat kijken, dan kan ik je aanraden de HTML Agility Pack te gebruiken. Deze converteert / repareert mogelijk brakke html naar valide XML, zodat je het in een XmlDocument of XPathDocument in kunt lezen.
De benodigde informatie kun je vervolgens met XPath-expressies uit je pagina's hengelen.

Ik doe het zelf ook, werkt als een zonnetje :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MrBucket schreef op zaterdag 14 februari 2009 @ 12:30:
Als je naar screenscraping (= het parsen van html) gaat kijken, dan kan ik je aanraden de HTML Agility Pack te gebruiken. Deze converteert / repareert mogelijk brakke html naar valide XML, zodat je het in een XmlDocument of XPathDocument in kunt lezen.
De benodigde informatie kun je vervolgens met XPath-expressies uit je pagina's hengelen.

Ik doe het zelf ook, werkt als een zonnetje :)
Dit ziet er inderdaad goed uit, ik denk dat ik hiermee eens aan de slag en kijken of ik het gewenste resultaat ermee kan bereiken. Ben blij dat jij en anderen(zie reviews) er goede ervaringen mee hebben.

Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online

? ?

..

[ Voor 99% gewijzigd door ? ? op 25-01-2013 09:48 ]


Acties:
  • 0 Henk 'm!

  • bastv
  • Registratie: September 2005
  • Laatst online: 21-09 21:13
iemand heeft al een C# api gemaakt.
http://www.codeplex.com/imdb

misschien kan je hier wat van opsteken

Acties:
  • 0 Henk 'm!

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
bastv schreef op zondag 15 februari 2009 @ 12:18:
iemand heeft al een C# api gemaakt.
http://www.codeplex.com/imdb

misschien kan je hier wat van opsteken
De API is nogal beperkt, het is geschreven in VB.NET en het maakt onder water gebruik van screenscraping dmv Regexes om de data uit de pagina's te peuteren.

Ik zou lekker zelf een implementatie schrijven :+
Niet om jouw post af te kraken hoor, het is allicht een aardig startpunt

[ Voor 9% gewijzigd door MrBucket op 15-02-2009 12:59 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals gezegd het is voor mijzelf om nog meer te "spelen" met C# dus ik ga hier een eigen implementatie voor schrijven. Wel zal ik de source van die VB.NET API even bekijken om wat ideeën op te doen. Ik zal vervolgens een implementatie gaan schrijven aan de hand van HTML Agilitypack (welke erg goed werkt!!) en via de geleverde Interfaces van IMDB om vervolgens op één van deze verder te ontwikkelen.
Pagina: 1