Muszę tylko pobrać pierwszy akapit strony Wikipedii. Treść musi być sformatowana w formacie html, gotowa do wyświetlania na moich stronach internetowych (więc BEZ BBCODE lub specjalnego KODU WIKIPEDIA!)
api
wikipedia
wikipedia-api
blask
źródło
źródło
Odpowiedzi:
Jest sposób, aby uzyskać całą „sekcję intro” bez przetwarzania kodu HTML! Podobnie jak w przypadku odpowiedzi AnthonyS z dodatkowym
explaintext
parametrem, tekst sekcji wstępu można uzyskać w postaci zwykłego tekstu.Pytanie
Pobieranie wprowadzenia Stack Overflow w postaci zwykłego tekstu:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
Odpowiedź JSON
(ostrzeżenia usunięte)
Dokumentacja: API: query / prop = extracts
Edycja: dodano
&redirects=1
zgodnie z zaleceniami w komentarzach.źródło
$extract = current((array)$data->query->pages)->extract;
. ale „Uwaga: próba uzyskania właściwości niebędącej przedmiotem” wciąż się pojawia.W rzeczywistości istnieje bardzo fajna właściwość zwana ekstraktami, której można używać z zapytaniami zaprojektowanymi specjalnie do tego celu. Wyciągi pozwalają uzyskać fragmenty artykułu (obcięty tekst artykułu). Istnieje parametr o nazwie exintro, którego można użyć do pobrania tekstu w sekcji zerowej (bez dodatkowych zasobów, takich jak obrazy lub infoboksy). Możesz także pobierać fragmenty o większej szczegółowości, takie jak pewna liczba znaków ( wymiany ) lub określona liczba zdań ( exsentences )
Oto przykładowe zapytanie http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow i piaskownica API http://en.wikipedia.org/wiki/ Special: ApiSandbox # action = query & prop = extracts & format = json & exintro = & titles = Stack% 20Overflow, aby eksperymentować z tym zapytaniem.
Zwróć uwagę, że jeśli chcesz konkretnie zapoznać się z pierwszym akapitem, nadal musisz wykonać dodatkowe przetwarzanie, zgodnie z sugestią w wybranej odpowiedzi. Różnica polega na tym, że odpowiedź zwrócona przez to zapytanie jest krótsza niż niektóre inne sugerowane zapytania interfejsu API, ponieważ nie masz dodatkowych zasobów, takich jak obrazy w odpowiedzi interfejsu API do analizy.
źródło
Od 2017 roku Wikipedia udostępnia REST API z lepszym buforowaniem. W dokumentacji możesz znaleźć następujące API, które idealnie pasuje do twojego przypadku użycia. (tak jak jest używana w nowej funkcji Podgląd strony )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
zwraca następujące dane, których można użyć do wyświetlenia podsumowania z małą miniaturą:Domyślnie podąża za przekierowaniami (więc to
/api/rest_v1/page/summary/StackOverflow
również działa), ale można to wyłączyć za pomocą?redirect=false
Jeśli potrzebujesz dostępu do API z innej domeny, możesz ustawić nagłówek CORS za pomocą
&origin=
(np.&origin=*
)Aktualizacja 2019: wydaje się, że API zwraca bardziej przydatne informacje o stronie.
źródło
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Czy możemy teraz uzyskać wyciąg za pomocą identyfikatora QID?Ten kod umożliwia pobranie zawartości pierwszego akapitu strony w postaci zwykłego tekstu.
Część tej odpowiedzi pochodzi stąd, a więc stąd . Zobacz dokumentację MediaWiki API , aby uzyskać więcej informacji.
źródło
Tak jest. Na przykład, jeśli chcesz uzyskać zawartość pierwszej sekcji artykułu Stack Overflow , użyj zapytania takiego:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Części oznaczają to:
format=xml
: Zwróć program formatujący wynik jako XML. Dostępne są inne opcje (takie jak JSON). Nie ma to wpływu na format samej zawartości strony, tylko na otaczający format danych.action=query&prop=revisions
: Uzyskaj informacje o wersjach strony. Ponieważ nie określamy, która rewizja, używana jest najnowsza.titles=Stack%20Overflow
: Uzyskaj informacje o stronieStack Overflow
. Możliwe jest pobranie tekstu większej liczby stron za jednym razem, jeśli oddzielisz ich nazwy za pomocą|
.rvprop=content
: Zwróć treść (lub tekst) wersji.rvsection=0
: Zwróć tylko zawartość z sekcji 0.rvparse
: Zwróć treść przeanalizowaną jako HTML.Należy pamiętać, że zwraca to całą pierwszą sekcję, w tym takie rzeczy, jak hatnotes („Do innych zastosowań…”), infoboksy lub obrazy.
Dostępnych jest kilka bibliotek dla różnych języków, które ułatwiają pracę z API, może być lepiej, jeśli użyjesz jednej z nich.
źródło
&redirects=true
na końcu linku gwarantuje, że dotrzesz do artykułu docelowego, jeśli taki istnieje.To jest kod, którego teraz używam dla strony internetowej, którą tworzę, która musi pobierać wiodące akapity / podsumowanie / sekcję 0 artykułów spoza Wikipedii, a wszystko to odbywa się w przeglądarce (javascript po stronie klienta) dzięki magii JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Używa interfejsu API Wikipedii, aby uzyskać wiodące akapity (zwane sekcją 0) w HTML, jak na przykład: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Następnie usuwa kod HTML i inne niepożądane dane, dając czysty ciąg podsumowania artykułu, jeśli chcesz, możesz po drobnych poprawkach uzyskać znacznik html "p" wokół początkowych akapitów, ale teraz jest tylko nowa linia charakter między nimi.
Kod:
źródło
Ten adres URL zwróci podsumowanie w formacie xml.
Stworzyłem funkcję do pobierania opisu słowa kluczowego z Wikipedii.
źródło
Możesz również pobrać zawartość, taką jak pierwszy pagagram, za pośrednictwem DBPedia, która pobiera zawartość Wikipedii i tworzy z niej ustrukturyzowane informacje (RDF) i udostępnia je za pośrednictwem interfejsu API. DBPedia API jest interfejsem SPARQL (opartym na RDF), ale wysyła JSON i jest dość łatwy do zapakowania.
Jako przykład podajemy bardzo prostą bibliotekę JS o nazwie WikipediaJS, która może wyodrębniać ustrukturyzowaną zawartość, w tym podsumowanie pierwszego akapitu: http://okfnlabs.org/wikipediajs/
Możesz przeczytać więcej na ten temat w tym poście na blogu: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
Kod biblioteki JS można znaleźć tutaj: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
źródło
Do
abstract.xml.gz
wywrotki brzmi jak ten, który chcesz.źródło
Jeśli szukasz tylko tekstu, który możesz następnie podzielić, ale nie chcesz korzystać z API, zajrzyj na en.wikipedia.org/w/index.php?title=Elephant&action=raw
źródło
Moje podejście było następujące (w PHP):
$utf8html
może wymagać dalszego czyszczenia, ale to w zasadzie wszystko.źródło
Wypróbowałem rozwiązanie @Michael Rapadas i @ Krinkle, ale w moim przypadku miałem problem ze znalezieniem niektórych artykułów w zależności od wielkości liter. Jak tutaj:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Uwaga Skróciłem odpowiedź z
exsentences=1
Najwyraźniej „normalizacja tytułu” nie działała poprawnie:
Wiem, że mogłem łatwo rozwiązać problem z wielkimi literami, ale była też niedogodność związana z koniecznością rzutowania obiektu na tablicę.
Tak więc, ponieważ bardzo chciałem uzyskać pierwszy akapit dobrze znanego i zdefiniowanego wyszukiwania (bez ryzyka pobierania informacji z innych artykułów), zrobiłem to tak:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Uwaga w tym przypadku zrobiłem obcięcie z
limit=1
Tą drogą:
Musimy jednak uważać na wielkie litery w naszych wynikach wyszukiwania.
Więcej informacji: https://www.mediawiki.org/wiki/API:Opensearch
źródło