Pobieranie tekstu w wikipedi

0

Witam
Od razu chciałbym was prosić o pomoc bo w tej dziedzinie akurat nie miałem jeszcze styczności. Otóż potrzebuje program który po wpisaniu w Edit jakiegoś słowa i nacisnięciu buttonu wyswietli w memo definicje tego słowa pobraną z wikipedii. Bardzo prosze was o pomoc bo kompletnie nie wiem jak można takie coś zrobić i za pomocą jakich komponentów.

Pozdrawiam wszystkich.

0

Musisz zacząć od przeglądnięcia kodu HTML i zobaczyć co się dzieje po kliknięciu na jeden z przycisków

<form action="/wiki/Specjalna:Szukaj" id="searchform">
<div>
  <input id="searchInput" name="search" type="text" title="Przeszukaj serwis Wikipedia [f]" accesskey="f" value="" />
  <input type='submit' name="go" class="searchButton" id="searchGoButton" value="Przejdź" />&nbsp;
  <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="Szukaj" />
</div>
</form>

powyżej widać fragment który powinien cie zainteresować.

Kolejna rzecz: musisz się zapytać co chcesz dokładnie wyświetlać, najprostszym rozwiązaniem było by po prostu otwarcie tego linka w komponencie do wyświetlania stron.

Jeżeli jednak chciałbyś to zrobić inaczej no to musisz parsować plik HTML z interesującym cie tekstem i odnaleść w nim interesującą cie zawartość. Strona wikipedii jest w XHTML1.1 więc powinna się parsować w komponentach dla XML'a. Ale pamiętaj stosując te metode tracisz wyświetlanie żworów i obrazków które czasami się pojawiają. Czyba że będziesz to chciał w jakiś sposób obsłużych, no ale to już musisz sam przemyśleć.

Pozdrawiam

PS. Sprawdz czy wikipedia nie udostępnia jakiegoś API umożliwiającego swobodny dostęp.

0

4programmers w kodach maja pobieranie tekstu (co prawda w php) ale mozna to zaimplementowac rowniez w innym jezyku. Zobacz CVS'a 4p

0

Dzięki. Mi zależy głównie tylko na pobieraniu samego tekstu, bez obrazków. Czyli musze pobrać stronę na dysk i użyć jakiegoś parsera XML??

prgtx dzieki, ściągne tylko ja w php to jestem noga więc trudno będzie mi przetłumaczyć :)

Edit: A dało by się po prostu wyciąć wszystkie znaczniki (wszystko między < a >) i jakoś powycinać część tekstu? Tylko teraz jak znaleŹć odpowiednią treść :/

0

Wysłanie zapytania o hasło:

/* wysylanie naglowka HEAD - zwracane sa informacje na temat pliku */
  $header  = "GET http://pl.wikipedia.org/wiki" . $path . " HTTP/1.1\r\n";
  $header .= "HOST: dummy\r\n";
  $header .= "Referer: http://pl.wikipedia.org/\r\n";
  $header .= "Accept: */*\r\n";
  $header .= "Pragma: no-cache\r\n";
  $header .= "Cache-Control: no-cache\r\n";
  $header .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)\r\n";
  $header .= "Connection: close\r\n\r\n";

W Delphi użyć jakiegoś komponentu internetowego (nie powiem jakiego bo już dawno nie siedziałem w Delphi) ale należy wysłać podobne nagłówki. Odebrać odpowiedź która będzie stroną www z szukanym hasłem.

Wyciąganie tekstu z odpowiedzi HTTP:

preg_match("/<!-- start content -->(.*)<!-- end content -->/", $wiki, $matches);

W Delphi analogicznie:

  • znaleźć pozycje tekstu ""
  • znaleźć pozycje tekstu ""
  • skopiować wszystko co jest od pozycji startowej (+dlugosc tego tekstu startowego) do pozycji tekstu koncowego i juz masz cala tresc szukanego hasla.

1 użytkowników online, w tym zalogowanych: 0, gości: 1