কেবল সামগ্রীর সারাংশ পুনরুদ্ধারের জন্য কি কোনও পরিষ্কার উইকিপিডিয়া এপিআই রয়েছে?


150

আমার কেবল উইকিপিডিয়া পৃষ্ঠার প্রথম অনুচ্ছেদটি পুনরুদ্ধার করা দরকার। বিষয়বস্তু অবশ্যই এইচটিএমএল গঠন করতে হবে, আমার ওয়েবসাইটগুলিতে প্রদর্শিত হতে প্রস্তুত (তাই কোনও বিবিসিডো, না উইকিপিডিয়া বিশেষ কোড!)


2
উইকিপিডিয়া বিবি কোড ব্যবহার করে না, এটি নিজস্ব উইকি মার্কআপ কোড ব্যবহার করে।
সুইভ

এটি প্রতিটি উইকিপিডিয়া নিবন্ধের জন্য কাজ করে না। ro.wikipedia.org/w/...
dumitru

উত্তর:


205

কোনও "html" পার্সিং ছাড়াই পুরো "ইন্ট্রো বিভাগ" পাওয়ার একটি উপায় আছে! অতিরিক্ত প্যারাম সহ অ্যান্টনিএসের উত্তরের অনুরূপ explaintext, আপনি সরল পাঠ্যে ইন্ট্রো বিভাগের পাঠ্য পেতে পারেন।

প্রশ্ন

সরল পাঠ্যে স্ট্যাক ওভারফ্লো এর ভূমিকা পাওয়া:

https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow

জেএসওএন প্রতিক্রিয়া

(সতর্কতা প্রত্যাহার)

{
    "query": {
        "pages": {
            "21721040": {
                "pageid": 21721040,
                "ns": 0,
                "title": "Stack Overflow",
                "extract": "Stack Overflow is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky, as a more open alternative to earlier Q&A sites such as Experts Exchange. The name for the website was chosen by voting in April 2008 by readers of Coding Horror, Atwood's popular programming blog.\nIt features questions and answers on a wide range of topics in computer programming. The website serves as a platform for users to ask and answer questions, and, through membership and active participation, to vote questions and answers up or down and edit questions and answers in a fashion similar to a wiki or Digg. Users of Stack Overflow can earn reputation points and \"badges\"; for example, a person is awarded 10 reputation points for receiving an \"up\" vote on an answer given to a question, and can receive badges for their valued contributions, which represents a kind of gamification of the traditional Q&A site or forum. All user-generated content is licensed under a Creative Commons Attribute-ShareAlike license. Questions are closed in order to allow low quality questions to improve. Jeff Atwood stated in 2010 that duplicate questions are not seen as a problem but rather they constitute an advantage if such additional questions drive extra traffic to the site by multiplying relevant keyword hits in search engines.\nAs of April 2014, Stack Overflow has over 2,700,000 registered users and more than 7,100,000 questions. Based on the type of tags assigned to questions, the top eight most discussed topics on the site are: Java, JavaScript, C#, PHP, Android, jQuery, Python and HTML."
            }
        }
    }
}

ডকুমেন্টেশন: এপিআই: ক্যোয়ারী / প্রোপ = এক্সট্রাক্ট


সম্পাদনা: &redirects=1মন্তব্যগুলিতে প্রস্তাবিত হিসাবে যুক্ত করা হয়েছে।


28
এটা ব্যবহার করা খুবই সুপারিশের হয় & পুনঃনির্দেশ = 1 যার প্রতিশব্দের বিষয়বস্তু স্বয়ংক্রিয়ভাবে পুননির্দেশনা
joecks

6
আমি পৃষ্ঠাগুলির নম্বর না জানলে কীভাবে আমি এই জেএসএন প্রতিক্রিয়া থেকে তথ্য পেতে পারি। আমি "এক্সট্রাক্ট" সম্বলিত JSON অ্যারে অ্যাক্সেস করতে পারছি না
লৌরিনাস জি

@ লৌরিনাসজি আপনি বস্তুটিকে একটি অ্যারেতে ফেলে দিতে পারেন এবং তারপরে এটি ধরে ফেলতে পারেন: ract এক্সট্রাক্ট = কারেন্ট ((অ্যারে) $ জসন_কোয়ারি-> কোয়েরি-> পৃষ্ঠাগুলি) -> এক্সট্রাক্ট
মার্কগুয়ে

@ লৌরিনাসজি, @ মার্কগুয়ে সহজ পুনরাবৃত্তির জন্য পেজিডের একটি তালিকা পেতে আপনি URL- এ প্যারামিটার হিসাবে ` সূচিপত্রগুলিও যুক্ত করতে পারেন ।
রামি

আমি উইকি কল থেকে জসন আউটপুট পেয়েছি এবং তারপরে জেসনকে অ্যারে $ ডেটা = জসন_ডেকোডে ($ জসন, সত্য) কাস্ট করেছিলাম। তারপরে আমি ব্যবহার করে 'এক্সট্রাক্ট' পাওয়ার চেষ্টা করি $extract = current((array)$data->query->pages)->extract;। তবে "বিজ্ঞপ্তি: অ-অবজেক্টের সম্পত্তি পাওয়ার চেষ্টা করা" আসছে।
শিখর বনসাল

79

এক্সট্রাক্ট নামে পরিচিত একটি দুর্দান্ত প্রপ রয়েছে যা এই উদ্দেশ্যে বিশেষভাবে ডিজাইন করা প্রশ্নের সাথে ব্যবহার করা যেতে পারে। এক্সট্রাক্টগুলি আপনাকে নিবন্ধের अर्টগুলি পেতে দেয় (ছাঁটা নিবন্ধের পাঠ্য)। এক্সিন্ট্রো নামে একটি প্যারামিটার রয়েছে যা জেরোথ বিভাগে পাঠ্য পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে (চিত্র বা ইনফোবক্সের মতো কোনও অতিরিক্ত সম্পদ নেই)। আপনি সূক্ষ্ম গ্রানুলারিটির সাথে যেমন নির্দিষ্ট সংখ্যক অক্ষর দ্বারা ( এক্সচারার ) বা নির্দিষ্ট সংখ্যক বাক্য দ্বারা ( অস্তিত্ব ) পুনরুদ্ধার করতে পারেন

এখানে একটি নমুনা ক্যোয়ারী http://en.wikedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20 ওভারফ্লো এবং এপিআই স্যান্ডবক্স http://en.wikedia.org/wiki/ বিশেষ: এপিআইস্যান্ডবক্স # অ্যাকশন = ক্যোয়ারী & প্রোপ = এক্সট্রাক্টস & ফর্ম্যাট = জসন এবং এক্সিন্ট্রো = এবং শিরোনাম = এই কোয়েরি নিয়ে আরও পরীক্ষা-নিরীক্ষার জন্য স্ট্যাক% 20 ওভারফ্লো

দয়া করে নোট করুন যে আপনি যদি প্রথম অনুচ্ছেদটি বিশেষভাবে চান তবে আপনার নির্বাচিত উত্তরে প্রস্তাবিত অনুসারে আপনাকে কিছু অতিরিক্ত সংশ্লেষ করতে হবে। এখানে পার্থক্য হ'ল এই ক্যোয়ারীর দ্বারা দেওয়া প্রতিক্রিয়াটি প্রস্তাবিত অন্যান্য এপিআই প্রশ্নের কয়েকটি থেকে সংক্ষিপ্ত কারণ আপনার পার্সের এপিআই প্রতিক্রিয়ার চিত্র যেমন অতিরিক্ত সম্পদ নেই।


62

২০১২ সাল থেকে উইকিপিডিয়া আরও ভাল ক্যাচিংয়ের সাথে একটি REST এপিআই সরবরাহ করে। ইন ডকুমেন্টেশন আপনি নিম্নলিখিত এপিআই যা পুরোপুরি আপনার ব্যবহারের ক্ষেত্রে ফিট খুঁজে পেতে পারেন। (এটি নতুন পৃষ্ঠা পূর্বরূপ বৈশিষ্ট্য দ্বারা ব্যবহৃত হয় )

https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow একটি নিম্ন থাম্বনেইলের সাথে সংক্ষিপ্তসার প্রদর্শন করতে ব্যবহৃত হতে পারে যা নিম্নলিখিত ডেটা ফেরত দেয়:

{
  "type": "standard",
  "title": "Stack Overflow",
  "displaytitle": "Stack Overflow",
  "extract": "Stack Overflow is a question and answer site for professional and enthusiast programmers. It is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky. It features questions and answers on a wide range of topics in computer programming. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange. The name for the website was chosen by voting in April 2008 by readers of Coding Horror, Atwood's popular programming blog.",
  "extract_html": "<p><b>Stack Overflow</b> is a question and answer site for professional and enthusiast programmers. It is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky. It features questions and answers on a wide range of topics in computer programming. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange. The name for the website was chosen by voting in April 2008 by readers of <i>Coding Horror</i>, Atwood's popular programming blog.</p>",
  "namespace": {
    "id": 0,
    "text": ""
  },
  "wikibase_item": "Q549037",
  "titles": {
    "canonical": "Stack_Overflow",
    "normalized": "Stack Overflow",
    "display": "Stack Overflow"
  },
  "pageid": 21721040,
  "thumbnail": {
    "source": "https://upload.wikimedia.org/wikipedia/en/thumb/f/fa/Stack_Overflow_homepage%2C_Feb_2017.png/320px-Stack_Overflow_homepage%2C_Feb_2017.png",
    "width": 320,
    "height": 149
  },
  "originalimage": {
    "source": "https://upload.wikimedia.org/wikipedia/en/f/fa/Stack_Overflow_homepage%2C_Feb_2017.png",
    "width": 462,
    "height": 215
  },
  "lang": "en",
  "dir": "ltr",
  "revision": "902900099",
  "tid": "1a9cdbc0-949b-11e9-bf92-7cc0de1b4f72",
  "timestamp": "2019-06-22T03:09:01Z",
  "description": "website hosting questions and answers on a wide range of topics in computer programming",
  "content_urls": {
    "desktop": {
      "page": "https://en.wikipedia.org/wiki/Stack_Overflow",
      "revisions": "https://en.wikipedia.org/wiki/Stack_Overflow?action=history",
      "edit": "https://en.wikipedia.org/wiki/Stack_Overflow?action=edit",
      "talk": "https://en.wikipedia.org/wiki/Talk:Stack_Overflow"
    },
    "mobile": {
      "page": "https://en.m.wikipedia.org/wiki/Stack_Overflow",
      "revisions": "https://en.m.wikipedia.org/wiki/Special:History/Stack_Overflow",
      "edit": "https://en.m.wikipedia.org/wiki/Stack_Overflow?action=edit",
      "talk": "https://en.m.wikipedia.org/wiki/Talk:Stack_Overflow"
    }
  },
  "api_urls": {
    "summary": "https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow",
    "metadata": "https://en.wikipedia.org/api/rest_v1/page/metadata/Stack_Overflow",
    "references": "https://en.wikipedia.org/api/rest_v1/page/references/Stack_Overflow",
    "media": "https://en.wikipedia.org/api/rest_v1/page/media/Stack_Overflow",
    "edit_html": "https://en.wikipedia.org/api/rest_v1/page/html/Stack_Overflow",
    "talk_page_html": "https://en.wikipedia.org/api/rest_v1/page/html/Talk:Stack_Overflow"
  }
}

ডিফল্টরূপে, এটি পুনঃনির্দেশগুলি অনুসরণ করে (যাতে এটি /api/rest_v1/page/summary/StackOverflowকাজ করে) তবে এটি দিয়ে অক্ষম করা যায়?redirect=false

যদি আপনাকে অন্য ডোমেন থেকে এপিআই অ্যাক্সেসের প্রয়োজন হয় তবে আপনি সিওআরএস শিরোনামটি &origin=(যেমন &origin=*) দিয়ে সেট করতে পারেন

আপডেট 2019: API টি পৃষ্ঠা সম্পর্কে আরও দরকারী তথ্য প্রত্যাবর্তন করবে বলে মনে হচ্ছে।


1
এর মধ্যে "টাইপ" অন্তর্ভুক্ত রয়েছে যা আপনি যা অনুসন্ধান করেছেন তা "ডিসেমবিগুয়েশন" আছে কিনা তা জানতে হলে যদি দুর্দান্ত হয়।
জিল শাহ

1
আমার কৌনিক ভিত্তিক অ্যাপ্লিকেশন থেকে এই লিঙ্কটি অ্যাক্সেস করার চেষ্টা করার সময় আমি কর্স ত্রুটি পাচ্ছি যে কেউ কীভাবে এটি সমাধান করবেন তা আমাকে বলতে পারেন।
প্রবীণ ওঝা

2
কোনও উইকিডাটা আইডি দিয়ে কি কোয়েরি করা সম্ভব? আমার কাছে কিছু জসন ডেটা বের করা হয়েছে যা দেখে মনে হচ্ছে "other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""আমরা কিউআইডি দ্বারা এখন আর এক্সট্র্যাক্ট পেতে পারি?
সৌরভ চ্যাটার্জী

1
এটি কি একাধিক পৃষ্ঠার সারাংশ লোড করতে ব্যবহৃত হতে পারে?
চিজাস

@ সৌরভ চ্যাটার্জী যা চেয়েছিলেন, এই আইপিআইটি পৃষ্ঠা আইডির সাহায্যে অনুসন্ধান করা যাবে? দেখে মনে হচ্ছে না
অভিজিৎ সরকার

39

এই কোডটি আপনাকে সরল পাঠ্যে পৃষ্ঠার প্রথম অনুচ্ছেদের সামগ্রী পুনরুদ্ধার করতে দেয়।

এই উত্তরটি অংশগুলি থেকে আসা এখানে এবং এইভাবে এখানে । দেখুন মিডিয়াউইকি এপিআই ডকুমেন্টেশন দেখুন।

// action=parse: get parsed text
// page=Baseball: from the page Baseball
// format=json: in json format
// prop=text: send the text content of the article
// section=0: top content of the page

$url = 'http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Baseball&prop=text&section=0';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript"); // required by wikipedia.org server; use YOUR user agent with YOUR contact information. (otherwise your IP might get blocked)
$c = curl_exec($ch);

$json = json_decode($c);

$content = $json->{'parse'}->{'text'}->{'*'}; // get the main text content of the query (it's parsed HTML)

// pattern for first match of a paragraph
$pattern = '#<p>(.*)</p>#Us'; // http://www.phpbuilder.com/board/showthread.php?t=10352690
if(preg_match($pattern, $content, $matches))
{
    // print $matches[0]; // content of the first paragraph (including wrapping <p> tag)
    print strip_tags($matches[1]); // Content of the first paragraph without the HTML tags.
}

আপনি যদি "প্রবাল" অনুসন্ধান করেন তবে ফলাফলটি এমন কিছু হবে যা প্রয়োজনীয় নয়। অন্য কোনও উপায় আছে, যাতে কেবল স্মিরির সাথে পি ট্যাগগুলি তোলা যায়
দীপংশু গোয়েল

31

হ্যা এখানে. উদাহরণস্বরূপ, আপনি যদি স্ট্যাক ওভারফ্লো নিবন্ধের প্রথম বিভাগের সামগ্রী পেতে চান তবে এই জাতীয় একটি কোয়েরি ব্যবহার করুন:

http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse

অংশগুলি এর অর্থ:

  • format=xml: এক্সএমএল হিসাবে ফলাফলের ফর্ম্যাটারটি ফিরিয়ে দিন। অন্যান্য বিকল্প (যেমন জেএসওএন) উপলভ্য। এটি পৃষ্ঠা সামগ্রীতে নিজেই বিন্যাসকে প্রভাবিত করে না, কেবল সংযুক্ত ডেটা ফর্ম্যাট।

  • action=query&prop=revisions: পৃষ্ঠার সংশোধন সম্পর্কিত তথ্য পান। যেহেতু আমরা কোন সংশোধনটি নির্দিষ্ট করি না, তাই সর্বশেষতমটি ব্যবহৃত হয়।

  • titles=Stack%20Overflow: পৃষ্ঠা সম্পর্কে তথ্য পান Stack Overflow। যদি আপনি তাদের নামগুলি আলাদা করে রাখেন তবে একযোগে আরও পৃষ্ঠাগুলির পাঠ্য পাওয়া সম্ভব |

  • rvprop=content: সংশোধনের বিষয়বস্তু (বা পাঠ্য) ফেরত দিন।

  • rvsection=0: বিভাগ 0 থেকে কেবল সামগ্রী ফিরে আসুন।

  • rvparse: এইচটিএমএল হিসাবে পার্স করা সামগ্রীটি ফেরত দিন।

মনে রাখবেন যে এটি হ্যাটোটোটস ("অন্যান্য ব্যবহারের জন্য ..."), ইনফোবক্স বা চিত্র সহ পুরো প্রথম বিভাগটি দেয়।

বিভিন্ন ভাষার জন্য বেশ কয়েকটি লাইব্রেরি উপলব্ধ রয়েছে যা এপিআই দিয়ে কাজ করা সহজ করে তোলে আপনি যদি সেগুলির মধ্যে একটি ব্যবহার করেন তবে এটি আপনার পক্ষে ভাল।


3
আমি সামগ্রীটি পার্স করা বিজ্ঞাপনটি এইচটিএমএল চাই না, আমি কেবল "সরল পাঠ্য" পেতে চাই (উইকিপিডিয়া কোড নয়)
ঝাঁকুনি

1
এপিআই এর মতো কিছু দেয় না। এবং আমি বুঝতে পারি কেন: কারণ এপিআই এর দৃষ্টিকোণ থেকে, এটি "স্পষ্ট পাঠ্য" ঠিক কী থাকা উচিত তা পরিষ্কার নয়। উদাহরণস্বরূপ, এটি "[উদ্ধৃতি আবশ্যক]", নেভিগেশনাল বাক্স বা চিত্রের বিবরণ অন্তর্ভুক্ত করার ক্ষেত্রে এটি কীভাবে সারণীগুলির প্রতিনিধিত্ব করবে?
সুইভ

2
&redirects=trueলিঙ্কের শেষে যুক্ত করা নিশ্চিত করে যে কোনও গন্তব্য উপস্থিত থাকলে আপনি গন্তব্য নিবন্ধে উঠবেন।
এরিক.মিচেল

14

এই কোডটি আমি এখনই ব্যবহার করছি যে ওয়েবসাইটটি আমি তৈরি করছি তার জন্য উইকিপিডিয়া নিবন্ধগুলির শীর্ষস্থানীয় অনুচ্ছেদ / সংক্ষিপ্ত / বিভাগ 0 পাওয়া দরকার, এবং এটি সমস্ত ব্রাউজারের মধ্যে (ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট) ম্যাজিককে ধন্যবাদ JSONP এর! -> http://jsfiddle.net/gautamadude/HMJJg/1/

এটি এইচটিএমএলে শীর্ষস্থানীয় অনুচ্ছেদগুলি (বিভাগ 0 বলে ডাকে) পাওয়ার জন্য উইকিপিডিয়া এপিআই ব্যবহার করে: http://en.wikedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?

এরপরে এটি এইচটিএমএল এবং অন্যান্য অনাকাঙ্ক্ষিত ডেটা সরিয়ে দেয়, আপনাকে নিবন্ধের সংক্ষিপ্তসারটির একটি পরিষ্কার স্ট্রিং দেয়, আপনি যদি চান সামান্য টুইটের মাধ্যমে, শীর্ষস্থানীয় অনুচ্ছেদের চারপাশে একটি "পি" এইচটিএমএল ট্যাগ পেতে পারেন তবে এখনই কেবল একটি নতুন লাইন রয়েছে তাদের মধ্যে চরিত্র।

কোড:

var url = "http://en.wikipedia.org/wiki/Stack_Overflow";
var title = url.split("/").slice(4).join("/");

//Get Leading paragraphs (section 0)
$.getJSON("http://en.wikipedia.org/w/api.php?format=json&action=parse&page=" + title + "&prop=text&section=0&callback=?", function (data) {
    for (text in data.parse.text) {
        var text = data.parse.text[text].split("<p>");
        var pText = "";

        for (p in text) {
            //Remove html comment
            text[p] = text[p].split("<!--");
            if (text[p].length > 1) {
                text[p][0] = text[p][0].split(/\r\n|\r|\n/);
                text[p][0] = text[p][0][0];
                text[p][0] += "</p> ";
            }
            text[p] = text[p][0];

            //Construct a string from paragraphs
            if (text[p].indexOf("</p>") == text[p].length - 5) {
                var htmlStrip = text[p].replace(/<(?:.|\n)*?>/gm, '') //Remove HTML
                var splitNewline = htmlStrip.split(/\r\n|\r|\n/); //Split on newlines
                for (newline in splitNewline) {
                    if (splitNewline[newline].substring(0, 11) != "Cite error:") {
                        pText += splitNewline[newline];
                        pText += "\n";
                    }
                }
            }
        }
        pText = pText.substring(0, pText.length - 2); //Remove extra newline
        pText = pText.replace(/\[\d+\]/g, ""); //Remove reference tags (e.x. [1], [4], etc)
        document.getElementById('textarea').value = pText
        document.getElementById('div_text').textContent = pText
    }
});

আপনি কি এটি ক্লায়েন্ট-সাইড স্ক্রিপ্টে যুক্ত করবেন? যদি তা হয়, তবে এটি এক্সএসএস নয়?
ক্রেগ

: এটা বাগ অনেক, আপনার স্ক্রিপ্টের সাথে এই লিঙ্কটি চেষ্টা করেছেন en.wikipedia.org/wiki/Modular_Advanced_Armed_Robotic_System
rohankvashisht

8

এই url এক্সএমএল ফর্ম্যাটে সারাংশ ফিরে আসবে।

http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=Agra&MaxHits=1

আমি উইকিপিডিয়া থেকে কোনও কীওয়ার্ডের বিবরণ আনতে একটি ফাংশন তৈরি করেছি।

function getDescription($keyword){
    $url='http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString='.urlencode($keyword).'&MaxHits=1';
    $xml=simplexml_load_file($url);
    return $xml->Result->Description;
}
echo getDescription('agra');

5

আপনি কি মাধ্যমে প্রথম pagagraph মতো সামগ্রী পেতে পারেন DBPedia যা উইকিপিডিয়া বিষয়বস্তু লাগে এবং (RDF) থেকে গঠিত তথ্য তৈরি করে এবং একটি API এর মাধ্যমে উপস্থিত করে। ডিবিপিডিয়া এপিআই একটি স্পারকিউএল ওয়ান (আরডিএফ-ভিত্তিক) তবে এটি জেএসওএনকে আউটপুট করে এবং এটি মোড়ানো বেশ সহজ।

উদাহরণ হিসাবে এখানে উইকিপিডিয়াজেএস নামে একটি দুর্দান্ত সাধারণ জেএস লাইব্রেরি রয়েছে যা সংক্ষিপ্তসার প্রথম অনুচ্ছেদ সহ কাঠামোগত সামগ্রী আহরণ করতে পারে: http://okfnlabs.org/wikediajs/

আপনি এই ব্লগ পোস্টে এটি সম্পর্কে আরও পড়তে পারেন: http://okfnlabs.org/blog/2012/09/10/wikediajs-a-javascript-library-for-accessing- উইকিপিডিয়া

জেএস লাইব্রেরির কোডটি এখানে পাওয়া যাবে: https://github.com/okfn/wikediajs/blob/master/wikedia.js



1

আপনি যদি কেবল সেই পাঠ্যের সন্ধান করছেন যা আপনি তখন বিভক্ত হয়ে যেতে পারেন তবে API ব্যবহার করতে চান না en.wikedia.org/w/index.php?title=Elephant&action=raw দেখুন


"আমার ওয়েবসাইটগুলিতে প্রদর্শিত হতে প্রস্তুত (তাই কোনও বিবিসিওইড, না উইকিপিডিয়া বিশেষ কোড!)" এবং এটি ঠিক অপসারণ

1

আমার পন্থাটি নিম্নরূপ ছিল (পিএইচপি তে):

$url = "whatever_you_need"

$html = file_get_contents('https://en.wikipedia.org/w/api.php?action=opensearch&search='.$url);
$utf8html = html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", $html), ENT_NOQUOTES, 'UTF-8');

$utf8html আরও পরিষ্কারের প্রয়োজন হতে পারে তবে এটি মূলত এটি।


&
Utf8

1

আমি @ মিশেল রাপাডাস এবং @ ক্রিংকের সমাধানটি চেষ্টা করেছি তবে আমার ক্ষেত্রে মূলধনের উপর নির্ভর করে কিছু নিবন্ধগুলি খুঁজে পেতে আমার সমস্যা হয়েছিল। এখানকার মত:

https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin

দ্রষ্টব্য আমি প্রতিক্রিয়াটি সাথে কাটা করেছি exsentences=1

দৃশ্যত "শিরোনামের স্বাভাবিককরণ" সঠিকভাবে কাজ করছে না:

শিরোনামের নরমালাইজেশন পৃষ্ঠার শিরোনামগুলিকে তাদের প্রমিত আকারে রূপান্তর করে। এর অর্থ প্রথম অক্ষরকে মূলধন করা, স্পেসগুলির সাথে আন্ডারস্কোরগুলি প্রতিস্থাপন করা এবং সেই উইকের জন্য সংজ্ঞায়িত স্থানীয় ফর্মের নাম স্থান পরিবর্তন করা। শিরোনামের নরমালাইজেশন স্বয়ংক্রিয়ভাবে সম্পন্ন হবে, যা কোয়েরির মডিউলগুলি ব্যবহৃত হয় তা নির্বিশেষে। তবে পৃষ্ঠার শিরোনামগুলিতে (tra n) কোনও পেছনের লাইন বিজোড় আচরণের কারণ হবে এবং সেগুলি প্রথমে ছড়িয়ে দেওয়া উচিত।

আমি জানি আমি মূলধন ইস্যুটি সহজেই বাছাই করতে পারতাম তবে বস্তুকে অ্যারেতে ফেলে দেওয়ার অসুবিধাও ছিল।

সুতরাং আমি সত্যিই একটি সুপরিচিত এবং সংজ্ঞায়িত অনুসন্ধানের প্রথম অনুচ্ছেদটি চেয়েছিলাম (অন্য নিবন্ধ থেকে তথ্য আনার ঝুঁকি নেই) আমি এটি এটি করেছি:

https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json

এই ক্ষেত্রে দ্রষ্টব্য আমি কাটা কাটা দিয়েছিলাম limit=1

এই পথে:

  1. আমি খুব সহজেই প্রতিক্রিয়া ডেটা অ্যাক্সেস করতে পারি।
  2. প্রতিক্রিয়া বেশ ছোট।

তবে আমাদের আমাদের অনুসন্ধানের মূলধনটি সম্পর্কে সতর্ক থাকতে হবে।

আরও তথ্য: https://www.mediawiki.org/wiki/API:Opensearch

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.