Avatar billede michael-schou Novice
21. februar 2017 - 10:07 Der er 11 kommentarer og
1 løsning

DELPHI - Få fat på IMDB Rating på film fra IMDB.com - Nogen der ved Hvordan?

Hej Eksperter :-)
Er der nogen af jer der ligger inde med viden om hvordan man fanger IMDB rating på film fra IMDB.com?

F.eks.:

Filmen Transformers 1
Link : http://www.imdb.com/title/tt0418279/
Har en IMDB Rating : 7.1


Nogen der ligger inde med et eksempel?

Mange Tak på Forhånd.
Avatar billede acore Ekspert
21. februar 2017 - 11:15 #1
Vil du gøre det i delphi? Uanset sprog er det lettest at bruge en eller andet html parser.

I PHP ville jeg bruge simple_html_dom, og koden kunne se sådan ud:

include("simple_html_dom.php");

$html = file_get_html("http://www.imdb.com/title/tt0418279/");
$rating = $html->find("div[class=ratingValue]", 0)->plaintext;
echo($rating); // Should print "7,1/10"
Avatar billede michael-schou Novice
21. februar 2017 - 12:15 #2
Dit eksempel viker super fint :-) - TAK.

Nu skal der bare lige tweaks på det så jeg kan bruge det til mit program.
Avatar billede acore Ekspert
21. februar 2017 - 12:52 #3
Det var godt. Hvilket programmeringssprog vil du bruge?
Avatar billede michael-schou Novice
21. februar 2017 - 13:04 #4
Jeg har i forvejen en parser til Delphi som hiver Film Titlen ud fra IMDB Film link så den prøver jeg lige om jeg kan få tilpasset til dette eksempel.
Avatar billede arne_v Ekspert
21. februar 2017 - 19:44 #5
I Delphi bruger du bare Indy til at hente link med.
Avatar billede michael-schou Novice
26. februar 2017 - 21:12 #6
Har ikke helt haftr tid til at se på det her de sidste par dage :-) .. Men skal nok vende tilbage når jeg har fundet ud af om jeg kan få det tilpasset.

Til arne_v : Har du et eksempel? .. Er lidt ny i det når det angå at grappe info fra nettet via. Delphi :-) - Tak.
Avatar billede arne_v Ekspert
26. februar 2017 - 21:31 #7
Et eksempel fra mit lager:


program currency;

uses
  Classes,
  IdHTTP,
  DOM,
  XMLRead,
  XPath;

var
  con : TIdHTTP;
  xmlstr : string;
  doc : TXMLDocument;
  xmlstm : TStringStream;
  allcurr : TNodeSet;
  i : integer;
  onecurr : TDOMElement;


begin
  con := TIdHTTP.Create;
  xmlstr := con.Get('http://www.nationalbanken.dk/_vti_bin/DN/DataService.svc/CurrencyRatesHistoryXML?lang=da');
  con.Free;
  doc := TXMLDocument.Create;
  xmlstm := TStringStream.Create(xmlstr);
  ReadXMLFile(doc, xmlstm);
  xmlstm.Free;
  allcurr := EvaluateXPathExpression('//Cube/Cube/Cube', doc.DocumentElement).AsNodeSet;
  for i := 0 to allcurr.Count - 1 do begin
      onecurr := TDOMElement(allcurr[i]);
      writeln(onecurr.AttribStrings['currency'] + ' ' + onecurr.AttribStrings['rate'] + ' ' + onecurr.AttribStrings['name']);
  end;
  allcurr.Free;
  doc.Free;
  readln;
end.
Avatar billede michael-schou Novice
01. marts 2017 - 13:41 #8
Jeg har denne PHP kode : 

<KODE START>

<?php
include("simple_html_dom.php");

$html = file_get_html("http://www.imdb.com/title/tt0418279/");
$rating = $html->find("div[class=ratingValue]", 0)->plaintext;

echo($rating); // Should print "7,1/10"
?>

<KODE SLUT>

Tænker lidt at den kan flettes in i en Delphi kode eller at man kan grappe Clear teksten fra PHP filen og sætte det ind på en label i en Delphi Form.
Avatar billede michael-schou Novice
02. marts 2017 - 08:16 #9
Glem min sidste kommentar det er jo den kode jeg har fået fra acore :-)

Det jeg ville spørge om er om der er en der kan hjælpe med at forklare hvordan man grapper den ClearTxT der kommer fra PHP siden :-) .....

For jeg vil egentlig gerne lære og forstå konceptet.
Avatar billede acore Ekspert
02. marts 2017 - 10:29 #10
Er det ikke bare de 3 første linier (efter Begin) i Arne's kode (#7) med et kald til en fil med php-koden i #1, så har du data i din variabel?
Avatar billede michael-schou Novice
22. marts 2017 - 12:28 #11
Det virker ikke som det skal :-)
Nu har jeg forsøgt mig med følgende :

var
  Form1: TForm1;
  con : TIdHTTP;
  xmlstr : string;
  xmlstm : TStringStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
con := TIdHTTP.Create;
xmlstr := con.Get('http://MIN-HJEMMESIDE.DK/IMDB.php');
con.Free;
xmlstm := TStringStream.Create(xmlstr);

Label1.Caption := xmlstr;
end;

For følgende fejl :
Socket Error #10022
Invalid Argument.
Avatar billede michael-schou Novice
03. september 2017 - 16:36 #12
Jeg fik det ikke rigtigt til at virke som det skulle, så hare lavet en smule om på mit program så man nu bare manuelt kan sætte IMDB Score'en ind.

Men tak for forsøget.
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

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