Skip to content

Instantly share code, notes, and snippets.

@zbyna
Created September 28, 2015 23:34
Show Gist options
  • Save zbyna/356e45d730144340b308 to your computer and use it in GitHub Desktop.
Save zbyna/356e45d730144340b308 to your computer and use it in GitHub Desktop.
Internet tools - scraping thetvdb.com pomocí šablony mix xpath a jsoniq
procedure TForm1.Button2Click(Sender: TObject);
var v,u : IXQValue;
i: Integer;
str: String;
pomString: String= ' ';
pomString3: String= ' ';
p: IXQValue;
p3: IXQValue;
p4: IXQValue ;
pomQuery: String;
x:TXQValueJSONArray;
begin
str:= '<html>'+' <?xml version="1.0" encoding="UTF-8" ?>'+ slineBreak +
'<Data>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>78901</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural</SeriesName>' + slineBreak +
'<banner>graphical/78901-g4.jpg</banner>' + slineBreak +
'<Overview>Dean and Sam Winchester are two brothers with a special talent. Well-versed...</Overview>' + slineBreak +
'<FirstAired>2005-09-13</FirstAired>' + slineBreak +
'<IMDB_ID>tt0460681</IMDB_ID>' + slineBreak +
'<zap2it_id>EP00754231</zap2it_id>' + slineBreak +
'<id>78901</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>79426</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural Science</SeriesName>' + slineBreak +
'<banner>graphical/z79426-g.jpg</banner>' + slineBreak +
'<Overview>Even hardheaded skeptics have to concede that there’s something inherently...</Overview>' + slineBreak +
'<FirstAired>2006-11-09</FirstAired>' + slineBreak +
'<zap2it_id>EP00359360</zap2it_id>' + slineBreak +
'<id>79426</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>154401</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>5th Dimension - Secrets of the Supernatural</SeriesName>' + slineBreak +
'<banner>graphical/154401-g.jpg</banner>' + slineBreak +
'<Overview>Does life end in death? Or does the soul wander from body to body? Are there...</Overview>' + slineBreak +
'<id>154401</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>197001</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural the Animation</SeriesName>' + slineBreak +
'<banner>graphical/197001-g2.jpg</banner>' + slineBreak +
'<Overview>Supernatural the Animation will not only remake the best episodes from the ...</Overview>' + slineBreak +
'<FirstAired>2011-02-23</FirstAired>' + slineBreak +
'<IMDB_ID>tt1679482</IMDB_ID>' + slineBreak +
'<id>197001</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>79432</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural The Unseen Powers of Animals</SeriesName>' + slineBreak +
'<banner>graphical/z79432-g.jpg</banner>' + slineBreak +
'<Overview>When science fiction becomes science fact. This groundbreaking series unravels...</Overview>' + slineBreak +
'<FirstAired>1999-03-30</FirstAired>' + slineBreak +
'<id>79432</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>74143</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>The Supernatural (1977)</SeriesName>' + slineBreak +
'<FirstAired>1977-06-01</FirstAired>' + slineBreak +
'<IMDB_ID>tt0396375</IMDB_ID>' + slineBreak +
'<id>74143</id>' + slineBreak +
'</Series>' + slineBreak +
'</Data>'+'</html>';
Memo2.Text:=str;
Memo1.Lines.Clear;
pomQuery:='<Data>' + slineBreak +
'<template:loop>' + slineBreak +
'<Series>' + slineBreak +
'<SeriesName>{nazev:=string(text())}</SeriesName>' + slineBreak +
'<FirstAired>{vysilano:=string(text())}</FirstAired>' + slineBreak +
'</Series>' + slineBreak +
'{radek:=[$nazev,$vysilano]}'+ sLineBreak + // musí být $
'</template:loop>' + slineBreak +
'</Data>';
i:=0;
for v in process(str,pomQuery) do
begin
p:= v.getProperty('nazev'); // je to pvkObject
p3:=v.getProperty('vysilano');
p4:=v.getProperty('radek');
for u in p do // tisk nazev
Memo1.Append(u.toString);
for u in p3 do // tisk vysilano
Memo1.Append(u.toString);
for u in p4 do // tisk radek
begin
x:= u as TXQValueJSONArray;
Memo1.Append(x.seq.get(0).toString +' '+x.seq.get(1).toString);
end;
Memo1.Append((inttostr(i))+' '+(pomString) + ' :-) '+ pomString3);
i:=i+1;
end;
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment