الحصول على محتوى النص من ميدياويكي الصفحة عبر API

StackOverflow https://stackoverflow.com/questions/1625162

سؤال

أنا جديدة تماما ميدياويكي ، والآن لدي مشكلة.لدي العنوان من صفحة ويكي ، أريد فقط نص الصفحة باستخدام قال api.php, ولكن كل ما وجدت في API هو وسيلة للحصول على ويكي محتوى الصفحة (مع العلامات ويكي).أنا استخدم هذا طلب HTTP...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

ولكن أريد فقط المحتوى النصي ، دون علامات الويكي.هل هذا ممكن مع ميدياويكي API ؟

هل كانت مفيدة؟

المحلول

وأنا لا أعتقد أنه من الممكن استخدام API للحصول على النص فقط.

وماذا عملت بالنسبة لي كان لطلب الصفحة HTML (باستخدام URL العادي التي ستستخدم في المتصفح) وتجريد من علامات HTML تحت شعبة المحتوى.

وتحرير:

ولقد كان نتائج جيدة باستخدام HTML محلل للحصول على جافا. له أمثلة على كيفية تجريد من علامات HTML تحت DIV معينة.

نصائح أخرى

استخدم action=parse للحصول على أتش تي أم أل:

/api.php؟action=parse&page=test

واحد طريقة للحصول على أن النص من لغة تأشير النص الفائق يكون لتحميله في متصفح والسير على العقد، وتبحث فقط عن العقد النص، وذلك باستخدام جافا سكريبت.

وتمديد TextExtracts من API يفعل ما كنت طالبا. استخدام prop=extracts للحصول على استجابة تنظيف. على سبيل المثال، هذا الرابط سوف تعطيك تنظيف يصل النص لهذه المادة المكدس تجاوز . ما هو جميل أيضا هو أنه لا يزال يتضمن علامات القسم، بحيث يمكنك تحديد المقاطع الفردية من هذه المادة.

وفقط لتشمل وجود صلة واضحة في جوابي، الرابط أعلاه يبدو مثل:

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

وتحرير: كما ذكر عمرو، TextExtracts هو تمديد إلى ميدياويكي، لذلك لن يكون بالضرورة متوفرة في كل موقع ميدياويكي

.

إضافة ?action=raw في نهاية ميدياويكي صفحة العودة أحدث محتوى الخام تنسيق النص.على سبيل المثال:- https://en.wikipedia.org/wiki/Main_Page?action=raw

يمكنك الحصول على ويكي بيانات في تنسيق النص من API باستخدام explaintext معلمة.بالإضافة إلى ذلك ، إذا كنت بحاجة إلى الوصول إلى العديد من الألقاب المعلومات ، يمكنك الحصول على جميع الألقاب' ويكي بيانات في مكالمة واحدة.استخدام الأنابيب حرف | فصل كل عنوان.على سبيل المثال, هذا استدعاء API سيعود بيانات من كل من "جوجل" و "ياهو" صفحات:

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

المعلمات:

  • explaintext:عودة مقتطفات النص العادي بدلا من محدودة HTML.
  • exlimit=max:عودة أكثر من نتيجة واحدة.ماكس حاليا 20.
  • exintro:عودة المحتوى فقط قبل نهاية القسم الأول.إذا كنت تريد بيانات كاملة, فقط إزالة هذا.
  • redirects=:حل إعادة توجيه المسائل.

والمستخدمين بيثون القادمة على هذا السؤال قد تكون مهتمة في wikipedia حدة (<لأ href = " https://wikipedia.readthedocs.io/en/latest/ "يختلط =" نوفولو noreferrer "> مستندات ):

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

ويتم تقسيم كل التنسيق، باستثناء أقسام (==) بعيدا.

سوف

وصفحات ويكي دون أي رموز التنسيق لا تجعل حقا معنى كبير في العديد من الحالات.

ويمكنك تجريد خارج تهيئة نفسك، إذا كنت تريد، ولكن عليك كسر بعض الاشياء في هذه العملية.

(إلا إذا كنت تقوم بإنشاء ما يشبه محرك البحث، وفي هذه الحالة ستحتاج إلى أجزاء النص فقط، ويمكن تجاهل تنسيق حرف تماما)

ويمكنك أن تفعل شيئا واحدا بعد جلب المحتويات في الصفحة الخاصة بك - يمكنك استخدام strip_tags() PHP وظيفة لإزالة علامات HTML

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top