Jak uzyskać zawartość Wikipedii za pomocą API Wikipedii?

Chcę dostać pierwszy akapit artykułu w Wikipedii.

Jakie jest zapytanie API, aby to zrobić?

Author: octosquidopus, 2011-08-25

11 answers

Zobacz tę sekcję na MediaWiki docs

Oto kluczowe parametry.

prop=revisions&rvprop=content&rvsection=0

Rvsection = 0 określa, że zwraca tylko sekcję wiodącą.

Zobacz ten przykład.

Http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=pizza

Aby uzyskać HTML, możesz użyć podobnie użyj action = parse http://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&page=pizza

Uwaga, że będziesz musiał usunąć wszelkie szablony lub infoboksy.

 57
Author: Gabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-25 05:12:41

Zobacz Czy istnieje czyste API Wikipedii Tylko do pobierania podsumowania treści? dla innych proponowanych rozwiązań. Oto jeden, który zasugerowałem:

Istnieje naprawdę bardzo ładny prop o nazwie wyciągi które mogą być używane z zapytaniami zaprojektowanymi specjalnie do tego celu. Ekstrakty pozwalają na otrzymywanie wyciągów artykułów (okrojony tekst artykułu). Istnieje parametr o nazwie exintro, który może być użyty do pobrania tekstu w sekcji zeroth (Brak dodatkowych zasobów, takich jak obrazy lub infoboksy). Można również pobierać wyciągi o drobniejszej ziarnistości, np. przez określoną liczbę znaków ( ) lub przez określoną liczbę zdań ( )

Oto przykładowe zapytanie http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow i API sandbox http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow{[2]aby poeksperymentować z tym zapytaniem.

Pamiętaj, że jeśli chcesz konkretnie pierwszy akapit, nadal musisz uzyskać pierwszy znacznik. Jednak w tym wywołaniu API nie ma dodatkowych zasobów, takich jak obrazy do analizy. Jeśli jesteś zadowolony z tego podsumowania intro, możesz pobrać tekst, uruchamiając funkcję PHP strip_tag, która usuwa znaczniki html.

 36
Author: AnthonyS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:15

Robię to w ten sposób:

Https://en.wikipedia.org/w/api.php?action=opensearch&search=bee&limit=1&format=json

Otrzymana odpowiedź to tablica z danymi, łatwa do przetworzenia:

[
  "bee",
  [
    "Bee"
  ],
  [
    "Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax."
  ],
  [
    "https://en.wikipedia.org/wiki/Bee"
  ]
]

Aby uzyskać tylko pierwszy akapit limit=1 jest to, czego potrzebujesz.

 22
Author: Watchmaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-27 16:26:04

Aby uzyskać pierwszy akapit artykułu:

Https://en.wikipedia.org/w/api.php?action=query&titles=Belgrade&prop=extracts&format=json&exintro=1

Stworzyłem krótkie dokumenty API Wikipedii na własne potrzeby. Istnieją przykłady pracy, jak uzyskać artykuł(y), obraz(y) i podobne.

 4
Author: Damjan Pavlica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-23 09:59:57

Jeśli musisz to zrobić dla dużej liczby artykułów, zamiast bezpośrednio odpytywać stronę, rozważ pobranie zrzutu bazy danych Wikipedii, a następnie uzyskanie do niej dostępu przez API, takie jak JWPL .

 3
Author: Psychonaut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-04 15:09:15
<script>    
    function dowiki(place) {
        var URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=';

        URL += "&titles=" + place;
        URL += "&rvprop=content";
        URL += "&callback=?";
        $.getJSON(URL, function (data) {
            var obj = data.query.pages;
            var ob = Object.keys(obj)[0];
            console.log(obj[ob]["extract"]);
            try{
                document.getElementById('Label11').textContent = obj[ob]["extract"];
            }
            catch (err) {
                document.getElementById('Label11').textContent = err.message;
            }

        });
    }
</script>
 3
Author: SHAHZAD ALAM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-15 21:55:20

Można uzyskać wprowadzenie artykułu w Wikipedii poprzez odpytywanie stron takich jak https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java. wystarczy przeanalizować plik json, a rezultatem jest zwykły tekst, który został wyczyszczony, w tym usunięcie linków i odniesień.

 2
Author: ccy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 03:31:08

Możesz pobrać bazę danych Wikipedii bezpośrednio i parsować wszystkie strony do XML za pomocą Wiki Parser , który jest samodzielną aplikacją. Pierwszy akapit jest oddzielnym węzłem w wynikowym XML.

Alternatywnie można wyodrębnić pierwszy akapit z jego tekstu wyjściowego.

 1
Author: PlinyTheElder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-29 16:33:32

Możesz użyć JQuery, aby to zrobić. Najpierw Utwórz adres url z odpowiednimi parametrami. Sprawdź ten link , aby zrozumieć, co oznaczają parametry. Następnie użyj metody $.ajax(), Aby pobrać artykuły. Zauważ, że wikipedia nie zezwala na cross origin request. Dlatego używamy dataType : jsonp w zapytaniu.

var wikiURL = "https://en.wikipedia.org/w/api.php";
wikiURL += '?' + $.param({
    'action' : 'opensearch',
    'search' : 'your_search_term',
    'prop'  : 'revisions',
    'rvprop' : 'content',
    'format' : 'json',
    'limit' : 10
});

 $.ajax( {
    url: wikiURL,
    dataType: 'jsonp',
    success: function(data) {
       console.log(data);
    }
} );
 1
Author: riteshkasat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-26 00:14:45

Możesz użyć w tym celu pola extract_html punktu końcowego podsumowania REST: np. https://en.wikipedia.org/api/rest_v1/page/summary/Cat .

Uwaga: ma to na celu po prostu trochę treści poprzez usunięcie większości wymowy, głównie w nawiasach w niektórych przypadkach.

 0
Author: Bernd S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 16:48:59
$keyword = "Batman"; //Term you want to search

$url = 'http://en.wikipedia.org/w/api.php?action=parse&page='.$keyword.'&format=json&prop=text&section=0';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Infeeds Sniper');
$c = curl_exec($ch);
$json = json_decode($c);
if($json !='' && isset($json->{'parse'})){
   $title = $json->{'parse'}->{'title'};
   $content = $json->{'parse'}->{'text'}->{'*'};
   $pattern = '#<p>(.*)</p>#Us';
   if(preg_match($pattern, $content, $matches)){
      if($matches[1]!=''){
         $con = preg_replace_callback("/\[[^)]+\]/", function($m){return '';}, $matches[1]);
         echo '<h2>'.$title.'</h2>'.strip_tags($con).'</p><src>Source: <a href="https://en.wikipedia.org/wiki/'.$keyword.'" target="_blank">Wikipedia</a></src>';
      }
   }
}

Wiki Summary Scrapper w / PHP

Wiki scrapper gist, aby uzyskać podsumowanie z Wikipedii lub DB Pedia API z PHP. Mam nadzieję, że to pomoże.

 -1
Author: mgks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-25 11:46:06