Last active
September 1, 2021 17:50
-
-
Save zbyna/22fd3fa78a4558933cbb to your computer and use it in GitHub Desktop.
Internet tools - scrarping thetvdb.com pomocí xpath query
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
procedure TForm1.Button2Click(Sender: TObject); | |
var pomQuery: String; | |
v: IXQValue; | |
i: Integer; | |
pomString: String; | |
pomString3: String; | |
p: IXQValue; | |
p3: IXQValue; | |
begin | |
str:= ' <?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>'; | |
Memo2.Text:=str; | |
Memo1.Lines.Clear; | |
// musí vracet typ string jinak vrací typ node a nefungje to | |
pomQuery:='for $prom in Data/series' + slineBreak + | |
'return [string($prom/seriesname/text()) ,string($prom/firstaired/text())]'; | |
i:=0; | |
for v in process(str,pomQuery) do | |
begin | |
// napřímo: (v as TXQValueJSONArray).seq.get(1).toString by to nefungovalo | |
// enumerátor se po první položce sám ukončí :-))) asi bug | |
p :=(v as TXQValueJSONArray).seq.get(0); | |
p3:=(v as TXQValueJSONArray).seq.get(1); | |
pomString3:= p3.toString; | |
pomString:=p.toString; | |
// je důležité zjistit typ výstupu pomString:=v.debugAsStringWithTypeAnnotation(); | |
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