وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

شروع به کار با API ویکی پدیا پایتون

0 65
زمان لازم برای مطالعه: 7 دقیقه


معرفی

در این مقاله از API ویکی‌پدیا برای بازیابی داده‌ها استفاده خواهیم کرد ویکیپدیا. به دلیل استفاده روزافزون از تجزیه و تحلیل داده ها و ابزارهای یادگیری ماشین، خراش دادن داده ها افزایش سریعی داشته است. اینترنت بزرگترین منبع اطلاعات است و بنابراین مهم است که بدانیم چگونه داده ها را از منابع مختلف واکشی کنیم. و ویکی‌پدیا یکی از بزرگترین و محبوب‌ترین منابع اطلاعاتی است روی اینترنت، این یک مکان طبیعی برای شروع است.

در این مقاله، روش استفاده از API ویکی‌پدیا پایتون را برای واکشی انواع اطلاعات از وب‌سایت ویکی‌پدیا خواهیم دید.

نصب و راه اندازی

برای استخراج داده ها از ویکی پدیا، ابتدا باید آن را نصب کنیم کتابخانه ویکی پدیا پایتون، که API رسمی ویکی‌پدیا را می‌پیچد. این را می توان با وارد کردن دستور زیر در خط فرمان یا terminal:

$ pip install wikipedia

پس از اتمام نصب، می‌توانیم از API ویکی‌پدیا در پایتون برای استخراج اطلاعات از ویکی‌پدیا استفاده کنیم. برای فراخوانی متدهای ماژول ویکی‌پدیا در پایتون، باید این کار را انجام دهیم import آن را با استفاده از دستور زیر.

import wikipedia

جستجوی عناوین و پیشنهادات

این search() متد در ویکی‌پدیا جستجویی را انجام می‌دهد که به عنوان آرگومان برای آن ارائه شده است. در نتیجه، این روش فهرستی از تمام عناوین مقاله را که حاوی پرس و جو هستند، برمی گرداند. مثلا:

import wikipedia
print(wikipedia.search("Bill"))

خروجی:

('Bill', 'The Bill', 'Bill Nye', 'Bill Gates', 'Bills, Bills, Bills', 'Heartbeat bill', 'Bill Clinton', 'Buffalo Bill', 'Bill & Ted', 'Kill Bill: Volume 1')

همانطور که در خروجی مشاهده می کنید، عنوان جستجو شده به همراه پیشنهادات جستجوی مرتبط نمایش داده می شود. شما می توانید تعداد عناوین جستجوی بازگشتی را با ارسال یک مقدار برای آن پیکربندی کنید results پارامتر، همانطور که در اینجا نشان داده شده است:

import wikipedia
print(wikipedia.search("Bill", results=2))

خروجی:

('Bill', 'The Bill')

کد بالا فقط 2 نتیجه جستجو از پرس و جو را چاپ می کند زیرا این تعداد مورد درخواست ما برای بازگرداندن است.

فرض کنید باید پیشنهادهای جستجوی ویکی‌پدیا را برای عنوان جستجو، «بیل کلیتون» که اشتباه وارد شده یا دارای اشتباه تایپی است، دریافت کنیم. این suggest() متد پیشنهادهای مربوط به عبارت جستجوی وارد شده به عنوان پارامتر را به آن برمی گرداند، یا اگر هیچ پیشنهادی پیدا نشد، “هیچ” را برمی گرداند.

بیایید آن را در اینجا امتحان کنیم:

import wikipedia
print(wikipedia.suggest("Bill cliton"))

خروجی:

bill clinton

می بینید که ورودی نادرست ما “بیل کلیتون” را گرفت و پیشنهاد صحیح “بیل کلینتون” را برگرداند.

استخراج خلاصه مقاله ویکی پدیا

ما می توانیم خلاصه یک مقاله ویکی پدیا را با استفاده از summary() روش. مقاله ای که برای آن خلاصه باید استخراج شود به عنوان پارامتر به این روش ارسال می شود.

بیایید خلاصه “اوبونتو” را استخراج کنیم:

print(wikipedia.summary("Ubuntu"))

خروجی:

Ubuntu ( (listen)) is a free and open-source Linux distribution based روی Debian. Ubuntu is officially released in three editions: Desktop, Server, and Core (for the internet of things devices and robots). Ubuntu is a popular operating system for cloud computing, with support for OpenStack.Ubuntu is released every six months, with long-term support (LTS) releases every two years. The latest release is 19.04 ("Disco Dingo"), and the most recent long-term support release is 18.04 LTS ("Bionic Beaver"), which is supported until 2028. Ubuntu is developed by Canonical and the community under a meritocratic governance model. Canonical provides security updates and support for each Ubuntu release, starting from the release date and until the release reaches its designated end-of-life (EOL) date. Canonical generates revenue through the sale of premium services related to Ubuntu. Ubuntu is named after the African philosophy of Ubuntu, which Canonical translates as "humanity to others" or "I am what I am because of who we all are".

کل خلاصه در خروجی چاپ شده است. ما می‌توانیم تعداد جملات موجود در متن خلاصه را برای نمایش با پیکربندی تنظیم کنیم sentences استدلال روش

print(wikipedia.summary("Ubuntu", sentences=2))

خروجی:

Ubuntu ( (listen)) is a free and open-source Linux distribution based روی Debian. Ubuntu is officially released in three editions: Desktop, Server, and Core (for the internet of things devices and robots).

همانطور که می بینید، تنها 2 جمله از خلاصه متن اوبونتو چاپ شده است.

پیشنهاد می‌کنیم بخوانید:  نحوه ساخت و استقرار یک Webhook پایتون-تلگرام-ربات v20

با این حال، به خاطر داشته باشید که wikipedia.summary یک “خطای ابهام زدایی” ایجاد می کند اگر page وجود ندارد یا page مبهم است بیایید یک مثال را ببینیم.

print(wikipedia.summary("key"))

کد بالا a را می اندازد DisambiguationError از آنجایی که مقالات زیادی وجود دارد که با “کلید” مطابقت دارند.

خروجی:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/wikipedia/util.py", line 28, in __call__
    ret = self._cache(key) = self.fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/wikipedia/wikipedia.py", line 231, in summary
    page_info = page(title, auto_suggest=auto_suggest, redirect=redirect)
  File "/Library/Python/2.7/site-packages/wikipedia/wikipedia.py", line 276, in page
    return WikipediaPage(title, redirect=redirect, preload=preload)
  File "/Library/Python/2.7/site-packages/wikipedia/wikipedia.py", line 299, in __init__
    self.__load(redirect=redirect, preload=preload)
  File "/Library/Python/2.7/site-packages/wikipedia/wikipedia.py", line 393, in __load
    raise DisambiguationError(getattr(self, 'title', page('title')), may_refer_to)
wikipedia.exceptions.DisambiguationError: "Key" may refer to: 
Key (cryptography)
Key (lock)
Key (map)
...

اگر خلاصه می خواستید روی برای مثال یک “کلید رمزنگاری”، سپس باید آن را به صورت زیر وارد کنید:

print(wikipedia.summary("Key (cryptography)"))

با پرس و جوی خاص تر، اکنون خلاصه صحیح را در خروجی دریافت می کنیم.

بازیابی اطلاعات کامل صفحه ویکی پدیا

به منظور دریافت مطالب، دسته‌ها، مختصات، تصاویر، پیوندها و سایر ابرداده‌های ویکی‌پدیا page، ابتدا باید ویکی پدیا را دریافت کنیم page شی یا page شناسه برای page. برای انجام این کار، page() روش با استفاده می شود page عنوان به عنوان آرگومان به متد ارسال می شود.

به مثال زیر نگاه کنید:

wikipedia.page("Ubuntu")

این فراخوانی متد a را برمی گرداند WikipediaPage شی، که در چند بخش بعدی بیشتر به بررسی آن خواهیم پرداخت.

برای دریافت محتوای متن ساده کامل ویکی پدیا page (به استثنای تصاویر، جداول و غیره)، می توانیم از content ویژگی از page هدف – شی.

print(wikipedia.page("Python").content)

خروجی:

Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aims to help programmers write clear, logical code for small and large-scale projects.Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including procedural, object-oriented, and  functional programming. Python is often described as a "batteries included" language due to its comprehensive standard library.Python was conceived in the late 1980s as a successor to the ABC language. Python 2.0, released 2000, introduced features like list comprehensions and a garbage collection system capable of collecting reference cycles.
...

به طور مشابه، ما می توانیم URL را دریافت کنیم page با استفاده از url صفت:

print(wikipedia.page("Python").url)

خروجی:

https://en.wikipedia.org/wiki/Python_(programming_language)

ما می توانیم URL لینک های خارجی را دریافت کنیم روی یک ویکی پدیا page با استفاده از references دارایی از WikipediaPage هدف – شی.

print(wikipedia.page("Python").references)

خروجی:

(u'http://www.computerworld.com.au/index.php/id;66665771', u'http://neopythonic.blogspot.be/2009/04/tail-recursion-elimination.html', u'http://www.amk.ca/python/writing/gvr-interview', u'http://cdsweb.cern.ch/journal/CERNBulletin/2006/31/News%20Articles/974627؟ln=en', u'http://www.2ality.com/2013/02/javascript-influences.html', ...)

این title دارایی از WikipediaPage شی را می توان برای استخراج عنوان استفاده کرد page.

print(wikipedia.page("Python").title)

خروجی:

Python (programming language)

به طور مشابه، categories از ویژگی می توان برای دریافت لیست دسته بندی های ویکی پدیا استفاده کرد page:

print(wikipedia.page("Python").categories)

خروجی

('All articles containing potentially dated statements', 'Articles containing potentially dated statements from August 2016', 'Articles containing potentially dated statements from December 2018', 'Articles containing potentially dated statements from March 2018', 'Articles with Curlie links', 'Articles with short description', 'Class-based programming languages', 'Computational notebook', 'Computer science in the Netherlands', 'Cross-platform free software', 'Cross-platform software', 'Dutch inventions', 'Dynamically typed programming languages', 'Educational programming languages', 'Good articles', 'High-level programming languages', 'Information technology in the Netherlands', 'Object-oriented programming languages', 'Programming languages', 'Programming languages created in 1991', 'Python (programming language)', 'Scripting languages', 'Text-oriented programming languages', 'Use dmy dates from August 2015', 'Wikipedia articles with BNF identifiers', 'Wikipedia articles with GND identifiers', 'Wikipedia articles with LCCN identifiers', 'Wikipedia articles with SUDOC identifiers')

این links عنصر از WikipediaPage شی را می توان برای دریافت لیست عناوین صفحاتی که پیوندهای آنها در صفحه وجود دارد استفاده کرد page.

print(wikipedia.page("Ubuntu").links)

خروجی

(u'/e/ (operating system)', u'32-bit', u'4MLinux', u'ALT Linux', u'AMD64', u'AOL', u'APT (Debian)', u'ARM64', u'ARM architecture', u'ARM v7', ...)

یافتن صفحات مبتنی بر روی مختصات

این geosearch() روش برای انجام یک ویکی پدیا استفاده می شود جستجوی جغرافیایی با استفاده از آرگومان های طول و عرض جغرافیایی که به عنوان اعداد شناور یا اعشاری به روش ارائه می شوند.

print(wikipedia.geosearch(37.787, -122.4))

خروجی:

('140 New Montgomery', 'New Montgomery Street', 'Cartoon Art Museum', 'San Francisco Bay Area Planning and Urban Research Association', 'Academy of Art University', 'The Montgomery (San Francisco)', 'California Historical Society', 'Palace Hotel Residential Tower', 'St. Regis Museum Tower', 'Museum of the African Diaspora')

همانطور که می بینید، روش بالا مقالات را بر اساس برمی گرداند روی مختصات ارائه شده

پیشنهاد می‌کنیم بخوانید:  نحوه ایجاد و مدیریت ماشین های مجازی با ابزار Vagrant Command Line

به طور مشابه، ما می توانیم ویژگی مختصات را تنظیم کنیم page() و مقالات مرتبط با موقعیت جغرافیایی را دریافت کنید. مثلا:

print(wikipedia.page(37.787, -122.4))

خروجی:

('140 New Montgomery', 'New Montgomery Street', 'Cartoon Art Museum', 'San Francisco Bay Area Planning and Urban Research Association', 'Academy of Art University', 'The Montgomery (San Francisco)', 'California Historical Society', 'Palace Hotel Residential Tower', 'St. Regis Museum Tower', 'Museum of the African Diaspora')

تنظیمات زبان

شما می توانید زبان ویکی پدیا را سفارشی کنید page به زبان مادری شما، ارائه شده است page در زبان مادری شما وجود دارد. برای این کار می توانید از set_lang() روش. هر زبان استانداردی دارد کد پیشوند که به عنوان آرگومان به متد ارسال می شود. به عنوان مثال، بیایید 2 جمله اول متن خلاصه ویکی “اوبونتو” را دریافت کنیم page به زبان آلمانی

wikipedia.set_lang("de")  
print(wikipedia.summary("ubuntu", sentences=2))  

خروجی

Ubuntu (auch Ubuntu Linux) ist eine Linux-Distribution, die auf Debian basiert. Der Name Ubuntu bedeutet auf Zulu etwa „Menschlichkeit“ und bezeichnet eine afrikanische Philosophie.

می توانید لیست زبان های ISO را که در حال حاضر پشتیبانی می شوند به همراه پیشوند آن به شرح زیر بررسی کنید:

print(wikipedia.languages())

بازیابی تصاویر در صفحه ویکی پدیا

این images لیستی از WikipediaPage شی را می توان برای واکشی تصاویر از ویکی پدیا استفاده کرد page. به عنوان مثال، اسکریپت زیر اولین تصویر را از اوبونتو ویکی‌پدیا برمی‌گرداند page:

print(wikipedia.page("ubuntu").images(0))

خروجی

https://upload.wikimedia.org/wikipedia/commons/1/1d/Bildschirmfoto_zu_ubuntu_704.png

کد بالا نشانی اینترنتی تصویر موجود در نمایه 0 در ویکی پدیا را برمی گرداند page.

برای دیدن تصویر می توانید آدرس فوق را کپی و در مرورگر خود پیست کنید.

بازیابی کامل محتوای صفحه HTML

برای دریافت کامل ویکی پدیا page در فرمت HTML می توانید از اسکریپت زیر استفاده کنید:

print(wikipedia.page("Ubuntu").html())

خروجی

<div class="mw-parser-output"><div role="note" class="hatnote navigation-not-searchable">For African philosophy, see <a href="/wiki/Ubuntu_philosophy" title="Ubuntu philosophy">Ubuntu philosophy</a>. For other uses, see <a href="/wiki/Ubuntu_(disambiguation)" class="mw-disambig" title="Ubuntu (disambiguation)">Ubuntu (disambiguation)</a>.</div>
<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Linux distribution based روی Debian</div>
...

همانطور که در خروجی مشاهده می شود، کل page در قالب HTML نمایش داده می شود. در صورتی که بارگذاری آن کمی بیشتر طول بکشد page اندازه بزرگ است، بنابراین به خاطر داشته باشید که می تواند یک را افزایش دهد HTMLTimeoutError زمانی که یک درخواست به سرور تمام می شود.

نتیجه

در این آموزش، نگاهی اجمالی به استفاده از API ویکی‌پدیا برای استخراج داده‌ها از وب داشتیم. ما دیدیم که چگونه می توان انواع اطلاعات مانند a pageعنوان، دسته، پیوندها، تصاویر، و بازیابی مقالات بر اساس روی موقعیت های جغرافیایی

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-22 07:36:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید