Saya hanya perlu mengambil paragraf pertama dari halaman Wikipedia. Konten harus berformat html, siap untuk ditampilkan di situs web saya (jadi TIDAK ADA BBCODE, atau KODE khusus WIKIPEDIA!)
api
wikipedia
wikipedia-api
berkilau
sumber
sumber
Jawaban:
Ada cara untuk mendapatkan seluruh "bagian intro" tanpa penguraian html! Mirip dengan jawaban AnthonyS dengan
explaintext
param tambahan , Anda bisa mendapatkan teks bagian intro dalam teks biasa.Pertanyaan
Mendapatkan intro Stack Overflow dalam teks biasa:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
Respons JSON
(peringatan dilucuti)
Dokumentasi: API: query / prop = ekstrak
Sunting: Ditambahkan
&redirects=1
seperti yang direkomendasikan dalam komentar.sumber
$extract = current((array)$data->query->pages)->extract;
. tetapi "Pemberitahuan: Mencoba mendapatkan properti yang bukan objek" terus muncul.Sebenarnya ada prop yang sangat bagus yang disebut ekstrak yang dapat digunakan dengan pertanyaan yang dirancang khusus untuk tujuan ini. Ekstrak memungkinkan Anda untuk mendapatkan ekstrak artikel (teks artikel terpotong). Ada parameter yang disebut exintro yang dapat digunakan untuk mengambil teks di bagian nol (tidak ada aset tambahan seperti gambar atau kotak informasi). Anda juga dapat mengambil ekstrak dengan granularity yang lebih halus seperti dengan sejumlah karakter ( exchars ) atau dengan sejumlah kalimat tertentu ( exsentences )
Berikut adalah contoh permintaan http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow dan kotak pasir API http://en.wikipedia.org/wiki/ Khusus: ApiSandbox # action = query & prop = ekstrak & format = json & exintro = & title = Stack% 20Overflow untuk bereksperimen lebih banyak dengan query ini.
Harap perhatikan bahwa jika Anda menginginkan paragraf pertama secara spesifik, Anda masih perlu melakukan parsing tambahan seperti yang disarankan dalam jawaban yang dipilih. Perbedaannya di sini adalah bahwa respons yang dikembalikan oleh kueri ini lebih pendek daripada beberapa kueri api lain yang disarankan karena Anda tidak memiliki aset tambahan seperti gambar di respons api untuk diuraikan.
sumber
Sejak 2017 Wikipedia menyediakan API REST dengan caching yang lebih baik. Dalam dokumentasi Anda dapat menemukan API berikut yang sangat cocok dengan kasus penggunaan Anda. (seperti yang digunakan oleh fitur Pratinjau Halaman baru )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
mengembalikan data berikut yang dapat digunakan untuk menampilkan musim panas dengan thumbnail kecil:Secara default, ini mengikuti pengalihan (sehingga
/api/rest_v1/page/summary/StackOverflow
juga berfungsi), tetapi ini dapat dinonaktifkan dengan?redirect=false
Jika Anda perlu mengakses API dari domain lain, Anda dapat mengatur header CORS dengan
&origin=
(misalnya&origin=*
)Pembaruan 2019: API tampaknya mengembalikan informasi yang lebih berguna tentang halaman.
sumber
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Bisakah kita mendapatkan ekstrak sekarang dengan QID?Kode ini memungkinkan Anda untuk mengambil konten paragraf pertama halaman dalam teks biasa.
Sebagian dari jawaban ini datang dari sini dan dari sini . Lihat dokumentasi MediaWiki API untuk informasi lebih lanjut.
sumber
Ya ada. Misalnya, jika Anda ingin mendapatkan konten dari bagian pertama artikel Stack Overflow , gunakan kueri seperti ini:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Bagian artinya:
format=xml
: Kembalikan pemformat hasil sebagai XML. Opsi lain (seperti JSON) tersedia. Ini tidak memengaruhi format konten halaman itu sendiri, hanya format data terlampir.action=query&prop=revisions
: Dapatkan informasi tentang revisi halaman. Karena kami tidak menentukan revisi mana, revisi terbaru digunakan.titles=Stack%20Overflow
: Dapatkan informasi tentang halamanStack Overflow
. Dimungkinkan untuk mendapatkan teks dari lebih banyak halaman sekaligus, jika Anda memisahkan namanya|
.rvprop=content
: Kembalikan konten (atau teks) revisi.rvsection=0
: Hanya kembalikan konten dari bagian 0.rvparse
: Kembalikan konten yang diuraikan sebagai HTML.Perlu diingat bahwa ini mengembalikan seluruh bagian pertama termasuk hal-hal seperti hatnotes ("Untuk kegunaan lain ..."), kotak info atau gambar.
Ada beberapa perpustakaan yang tersedia untuk berbagai bahasa yang membuat bekerja dengan API lebih mudah, mungkin lebih baik bagi Anda jika Anda menggunakan salah satu dari mereka.
sumber
&redirects=true
ke akhir tautan memastikan Anda mendapatkan artikel tujuan, jika ada.Ini adalah kode yang saya gunakan saat ini untuk situs web yang saya buat yang perlu mendapatkan paragraf / ringkasan / bagian 0 dari artikel Wikipedia, dan semuanya dilakukan di dalam browser (javascript sisi klien) berkat magick dari JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Ini menggunakan API Wikipedia untuk mendapatkan paragraf terkemuka (disebut bagian 0) dalam HTML seperti: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Ini kemudian menghapus HTML dan data yang tidak diinginkan lainnya, memberi Anda serangkaian ringkasan artikel yang bersih, jika Anda mau, dengan sedikit penyesuaian, dapatkan tag html "p" di sekitar paragraf terkemuka, tetapi saat ini hanya ada baris baru karakter di antara mereka.
Kode:
sumber
URL ini akan mengembalikan ringkasan dalam format xml.
Saya telah membuat fungsi untuk mengambil deskripsi kata kunci dari wikipedia.
sumber
Anda juga bisa mendapatkan konten seperti pagagraf pertama melalui DBPedia yang mengambil konten Wikipedia dan membuat informasi terstruktur darinya (RDF) dan membuatnya tersedia melalui API. DBPedia API adalah SPARQL (berbasis RDF) tetapi menghasilkan JSON dan cukup mudah untuk dibungkus.
Sebagai contoh di sini adalah perpustakaan JS super sederhana bernama WikipediaJS yang dapat mengekstraksi konten terstruktur termasuk ringkasan paragraf pertama: http://okfnlabs.org/wikipediajs/
Anda dapat membaca lebih lanjut tentang hal ini di posting blog ini: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-jajacriptcript-library-for-accessing-wikipedia-article-information.html
Kode perpustakaan JS dapat ditemukan di sini: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
sumber
Tempat
abstract.xml.gz
sampah terdengar seperti yang Anda inginkan.sumber
Jika Anda hanya mencari teks yang dapat Anda pisah tetapi tidak ingin menggunakan API, lihat en.wikipedia.org/w/index.php?title=Elephant&action=raw
sumber
Pendekatan saya adalah sebagai berikut (dalam PHP):
$utf8html
mungkin perlu dibersihkan lebih lanjut, tetapi pada dasarnya itu saja.sumber
Saya mencoba @Michael Rapadas dan solusi @ Krinkle tetapi dalam kasus saya, saya mengalami kesulitan untuk menemukan beberapa artikel tergantung dari kapitalisasi. Seperti di sini:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Catatan saya memotong respons dengan
exsentences=1
Tampaknya "normalisasi judul" tidak berfungsi dengan benar:
Saya tahu saya bisa menyelesaikan masalah kapitalisasi dengan mudah tetapi ada juga ketidaknyamanan karena harus membuang objek ke array.
Jadi karena saya benar-benar menginginkan paragraf pertama dari pencarian yang terkenal dan terdefinisi (tidak ada risiko untuk mengambil info dari artikel lain) saya melakukannya seperti ini:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Perhatikan dalam hal ini saya melakukan pemotongan
limit=1
Cara ini:
Tetapi kita harus tetap berhati-hati dengan penggunaan huruf kapital pencarian kita.
Info lebih lanjut: https://www.mediawiki.org/wiki/API:Opensearch
sumber