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

فهرست مطالب پنهان‌کردن فهرست
  1. 1. مقدمه: آشنایی با مفهوم API
  2. 2. مفاهیم پایه در پایتون برای استفاده از API
    1. 2.1. توابع
    2. 2.2. کتابخانه‌ها
    3. 2.3. روش‌های HTTP
  3. 3. پکیج urllib در پایتون
    1. 3.1. دانلود داده با استفاده از پکیج urllib در پایتون
  4. 4. معرفی کتابخانه requests
    1. 4.1. نحوه استفاده از کتابخانه requests و API
  5. 5. استفاده از ماژول http.client برای ارتباط با API
  6. 6. قدرت کتابخانه‌های httplib2 ،treq ،grequests در پایتون
  7. 7. موارد استفاده از API در استخراج داده
    1. 7.1. تجزیه‌وتحلیل داده و تصویرسازی
    2. 7.2. استفاده از خدمات شخص‌سوم (Third-Party Services)
    3. 7.3. انتشار خودکار پست‌های رسانه‌های اجتماعی
    4. 7.4. وب اسکرپینگ
    5. 7.5. ایجاد ربات گفت‌وگو (Chatbot)
    6. 7.6. تجزیه‌وتحلیل بازار بورس
  8. 8. جمع‌بندی
  9. 9. پرسش‌های متداول
    1. 9.1. API چیست و چرا در پایتون برای استخراج داده‌ها از آن استفاده می‌کنیم؟
    2. 9.2. کتابخانه urllib در پایتون چه کاربردی دارد و چگونه برای استخراج داده‌ها از آن استفاده می‌شود؟
    3. 9.3. کتابخانه requests در پایتون چه مزیت‌هایی دارد و چگونه برای اتصال به APIها استفاده می‌شود؟
    4. 9.4. چالش‌های اصلی در استخراج داده‌ها از API‌ها چیست و چگونه می‌توان آن‌ها را مدیریت کرد؟
    5. 9.5. استفاده از کتابخانه BeautifulSoup در پایتون برای استخراج داده‌ها چه مزایایی دارد؟
  10. 10. یادگیری علم داده را از امروز شروع کنید!
  11. 11. هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!
    1. 11.1. جوایز هفت‌خوان
    2. 11.2. پرسش‌های مسابقه
  12. 12. هفت‌خوان‌پلاس

مقدمه: آشنایی با مفهوم API

مفهوم API (Application programming interface) یا واسط برنامه‌نویسی نرم‌افزار کاربردی را می‌توان مانند نقش یک گارسن در یک رستوران تصور کرد. شما، به‌عنوان مشتری، سفارش خود را می‌دهید، گارسن آن را به آشپزخانه می‌برد (سیستم) و درنهایت، این گارسن است که غذای شما را می‌آورد (API).

حالا سؤال اصلی این است: چرا باید از APIها استفاده کرد؟

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

نحوه عملکرد API

مفاهیم پایه در پایتون برای استفاده از API

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

توابع

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

کتابخانه‌ها

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

روش‌های HTTP

وقتی پای استفاده از APIها به میان می‌آيد، درباره روش‌های HTTP، مانند GET، POST، PUT، DELETE و غیره، زیاد می‌شنوید. این روش‌ها به API می‌گویند که کدام عمل را می‌خواهید انجام دهید؛ برای مثال، GET برای درخواست داده استفاده می‌شود و POST برای ارسال داده.

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

پکیج urllib در پایتون

حالا زمان مناسبی است تا به اولین ابزار اصلی در استفاده از API در پایتون بپردازیم. پکیج urllib جزو کتابخانه‌های استاندارد پایتون است؛ بنابراین به نصب هیچ ماژول اضافی نیازی ندارید.

urllib مخفف URL Library (کتابخانه URL) است. همان‌طور که از نامش پیداست، به ما در مدیریت URLها کمک می‌کند. به خصوص، ابزارهایی برای ساختن، تجزیه‌وتحلیل و درخواست‌کردن URL ها فراهم می‌آورد.

برای واردکردن این پکیج می‌توانید از این دستور استفاده کنید:

حالا آماده‌اید تا یک درخواست API ابتدایی ارسال کنید.

فرض کنید می‌خواهیم به یک API نمونه دسترسی پیدا کنیم؛ بیایید یک API عمومی را انتخاب کنیم. برای ارسال یک درخواست GET و دریافت داده از این API این کارها را انجام می‌دهیم:

در اینجا چه اتفاقی افتاد؟ ابتدا URL مدنظر را تعریف می‌کنیم. سپس از urllib.request.urlopen(url) برای ارسال یک درخواست GET به آن URL استفاده می‌کنیم. پاسخ از سرور خوانده می‌شود، به فرمت JSON تبدیل می‌شود و سپس چاپ می‌شود.

دانلود داده با استفاده از پکیج urllib در پایتون

حال که می‌دانیم چگونه یک درخواست API ابتدایی با urllib ارسال کنیم، بیایید بررسی کنیم چگونه می‌توانیم داده را دانلود کنیم. با مثال قبلی خودمان ادامه می‌دهیم. فرض کنید می‌خواهیم داده‌هایی را که از API دریافت می‌کنیم دانلود و به‌عنوان یک فایل JSON ذخیره کنیم. به‌این شکل می‌توانیم این کار را انجام دهیم:

در اینجا ما همان کارهایی را انجام می‌دهیم که قبلاً انجام دادیم (ارسال یک درخواست GET به URL و رمزگشایی‌کردن پاسخ) را دوباره انجام می‌دهیم؛ سپس یک فایل به‌نام data.json با حالت نوشتن () باز می‌کنیم. اگر فایل وجود نداشته باشد، پایتون برای ما آن را ایجاد می‌کند. سپس از ()json.dump برای نوشتن داده‌های‌مان در فایل استفاده می‌کنیم. آرگومان اول داده‌هاست و آرگومان دوم فایلی است که می‌خواهیم در آن بنویسیم.

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

معرفی کتابخانه requests

هرچند کتابخانه urllib عالی است، بسیاری از افراد معتقدند استفاده از requests آسان‌تر است. برای شروع شما باید کتابخانه requests را نصب کنید؛ زیرا برخلاف urllib، به‌صورت پیش‌فرض در پایتون وجود ندارد.

نگران نباشید؛ این کار بسیار آسان است. فقط ترمینال خود را باز کنید و دستور زیر را تایپ کنید:

با نصب requests، شما آماده برای ارسال درخواست‌های API خواهید بود.

اینجا نشان می‌دهیم که چگونه می‌توانید یک درخواست GET ارسال کنید، مشابه آنچه با urllib انجام دادیم:

در اینجا شما به رمزگشایی پاسخ، مانند urllib، نیازی ندارید؛ زیرا requests می‌تواند به‌صورت خودکار پاسخ‌های JSON را با استفاده از متد ()json. رمزگشایی کند.

همچنین ما در مقدمه به متد‌های HTTP اشاره کردیم. با requests ، کافی است get را با post، put،  delete یا هر متد HTTP دیگری که می‌خواهید جایگزین کنید. مانند requests.post(url, data={…}) .

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

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

نحوه استفاده از کتابخانه requests و API

۱. مدیریت پارامترهای جست‌وجو

بسیاری از APIها نیاز دارند شما اطلاعات اضافی را به‌عنوان پارامترهای جست‌وجو در URL خود ارسال کنید؛ برای مثال، فرض کنید ما یک API داریم که به ما اجازه می‌دهد برای کاربران جست‌وجو کنیم و می‌توانیم نام کاربر را به‌عنوان پارامتر جست‌وجو مشخص کنیم که در requests به‌این شکل انجام می‌شود:

۲. ارسال داده به‌صورت POST

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

۳. مدیریت هدرها

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

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

استفاده از ماژول http.client برای ارتباط با API

ماژول http.client به‌عنوان یک ابزار سطح پایین‌ برای ارتباط با پروتکل HTTP عمل می‌کند. این ابزار ممکن است به‌اندازه requests کاربرپسند نباشد، اما به‌عنوان یک بخش از کتابخانه استاندارد پایتون، ابزاری قدرتمند برای مهارت‌های مرتبط با API است. در ادامه برای درخواست‌های GET و POST از این ابزار استفاده می‌کنیم.

ارسال درخواست: با استفاده از ماژول ‘http.client’، شما می‌توانید درخواست GET ارسال کنید؛ برای مثال:

خواندن پاسخ: برای خواندن پاسخ از API، می‌توانید از متد ()read. استفاده کنید:

ارسال درخواست: برای ارسال یک درخواست POST و ارسال داده در آن می‌توانید از این مثال استفاده کنید:

بستن اتصال: در انتها مهم است که هنگام اتمام ارتباط اتصال را ببندید.

قدرت کتابخانه‌های  httplib2 ،treq ،grequests در پایتون

در ادامه کاوش در دنیای پایتون و APIها به سه کتابخانه پایتون دیگر به نام‌های  httplib2، treq و grequests مختصر نگاهی می‌اندازیم که برای آسانی کار با APIها طراحی شده‌اند.

httplib2 یک کتابخانه جامع است که ویژگی‌های پیچیده‌‎ای مانند انتقال‌های مسیریابی، کوکی‌ها و احراز هویت را به‌صورت پنهانی انجام می‌دهد.

treq یک کتابخانه پایتون است که به شما رویکردی دوستانه‌تر برای انجام‌دادن درخواست‌های HTTP ارائه می‌کند. این کتابخانه بر پایه کتابخانه محبوب Requests ساخته شده است و ویژگی‌های قدرتمند Twisted، یک موتور شبکه رویداد محور، را اضافه می‌کند.

grequests به شما امکان می‌دهد که از requests با gevent برای انجام درخواست‌های HTTP ناهمزمان به راحتی استفاده کنید. این بسیار برای زمانیکه نیاز به انجام درخواست‌های بسیاری دارید و نمی‌خواهید منتظر اتمام هر کدام از آنها باشید، مفید است.

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

موارد استفاده از API در استخراج داده

تجزیه‌وتحلیل داده و تصویرسازی

API‌ها حجم زیادی از داده‌ها را فراهم می‌کنند که می‌توان از آن‌ها استخراج و برای تجزیه‌وتحلیل استفاده کرد؛ برای مثال، شما می‌توانید از API شبکه ایکس یا توئیتر برای جمع‌آوری توئیت‌ها درباره یک موضوع خاص استفاده کنید، سپس احساسات توییت‌ها را تحلیل و نتایج را تصویرسازی کنید.

استفاده از خدمات شخص‌سوم (Third-Party Services)

API‌ها اغلب برای استفاده از خدمات Third-Party در برنامه مورداستفاده قرار می‌گیرند. این ممکن است شامل استفاده از API نقشه‌های گوگل در برنامه یا درگاه‌های پرداخت باشد.

انتشار خودکار پست‌های رسانه‌های اجتماعی

بسیاری از پلتفرم‌های رسانه‌های اجتماعی API دارند که به شما امکان انتشار خودکار پست‌ها را می‌دهند. شرکت‌ها برای اغلب از این امکان برای استراتژی‌های بازاریابی رسانه‌های اجتماعی خود استفاده می‌کنند؛ مثال، می‌توانید یک اسکریپت ایجاد کنید که به‌طور خودکار به‌روزرسانی‌ها از وب‌سایت را به حساب‌های شبکه‌های اجتماعی ارسال کند.

وب اسکرپینگ

اگر یک وب‌سایت API نداشته باشد یا اطلاعات موردنیاز را ازطریق API خود ارائه نکند، می‌توانید از کتابخانه‌های پایتون مانند BeautifulSoup یا Scrapy برای Web Scraping داده‌ها به‌صورت مستقیم از صفحات آن وب‌سایت استفاده کرد.

ایجاد ربات گفت‌وگو (Chatbot)

می‌توانید از API‌ها برای ایجاد یک ربات گفت‌وگو استفاده کنید؛ برای مثال، ربات شما می‌تواند از API هواشناسی برای ارائه به‌روزرسانی‌های هوا استفاده کند، از API اخبار برای ارائه به‌روزرسانی‌های اخبار و غیره.

تجزیه‌وتحلیل بازار بورس

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

جمع‌بندی

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

با پایتون، به‌علت سادگی و انتخاب گسترده کتابخانه‌های موجود، به بهره‌برداری از توانایی APIها دسترسی آسان‌تر می‌شود؛ بااین‌حال، همان‌طور که ابزاری قدرتمند است، APIها مسئولیت‌هایی نیز دارند، ازجمله مدیریت اشتباه‌ها، درک حدود نرخ، و به‌ویژه ایجاد امنیت ازطریق مکانیزم‌های احراز هویت صحیح. این را به خاطر بسپارید: یادگیری کار با APIها دنیایی از امکانات برای کنترل داده، ادغام برنامه و اتوماسیون را به شما می‌دهد. این یک مهارت حیاتی برای هر برنامه‌نویس مدرن، دانشمند داده یا علاقه‌مند به فناوری است.

پرسش‌های متداول

API چیست و چرا در پایتون برای استخراج داده‌ها از آن استفاده می‌کنیم؟

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

کتابخانه urllib در پایتون چه کاربردی دارد و چگونه برای استخراج داده‌ها از آن استفاده می‌شود؟

کتابخانه urllib در پایتون برای مدیریت URLها و ارسال درخواست‌های وب استفاده می‌شود. این کتابخانه به شما اجازه می‌دهد که درخواست‌های GET و POST را ارسال کنید و پاسخ‌های API را دریافت و پردازش کنید که در استخراج داده‌ها از وب کاربردی است.

کتابخانه requests در پایتون چه مزیت‌هایی دارد و چگونه برای اتصال به APIها استفاده می‌شود؟

کتابخانه requests در پایتون برای سهولت و کاربردی‌بودن در ارسال درخواست‌های HTTP محبوب است. این کتابخانه امکان ارسال درخواست‌های ساده و پیچیده HTTP را فراهم می‌کند و دارای قابلیت‌هایی مانند رمزگشایی خودکار پاسخ‌های JSON است. استفاده از آن برای اتصال به APIها و دانلود داده‌ها بسیار رایج است.

چالش‌های اصلی در استخراج داده‌ها از API‌ها چیست و چگونه می‌توان آن‌ها را مدیریت کرد؟

چالش‌های اصلی شامل محدودیت‌های نرخ درخواست (rate limiting)، مسائل امنیتی و مدیریت خطاهای API هستند. برای مقابله با این مشکلات توصیه می‌شود که از کتابخانه‌های معتبر استفاده کنید، کلیدهای API را محافظت کنید و درخواست‌ها را به‌گونه‌ای طراحی کنید که با محدودیت‌های API سازگار باشند.

استفاده از کتابخانه BeautifulSoup در پایتون برای استخراج داده‌ها چه مزایایی دارد؟

BeautifulSoup در پایتون برای تبدیل و استخراج داده‌ها از HTML و XML استفاده می‌شود. این کتابخانه با ارائه رابط کاربری ساده و قدرتمند، تجزیه و دسترسی به اجزای مختلف صفحات وب را آسان می‌کند که برای پروژه‌های استخراج داده‌های مبتنی بر وب بسیار مفید است.

یادگیری علم داده را از امروز شروع کنید!

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

مشاوران کافه‌تدریس به شما کمک می‌کنند مسیر یادگیری برای ورود به این حوزه را شروع کنید:

دوره جامع دیتا ساینس و ماشین لرنینگ

هفت‌خوان: مطالعه کن، نظر بده، جایزه بگیر!

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

جوایز هفت‌خوان

  • ۱,۵۰۰,۰۰۰ تومان جایزه نقدی
  • ۳ کلاس رایگان ۵۰۰,۰۰۰ تومانی

پرسش‌های مسابقه

برای شرکت در هفت‌خوان کافه‌تدریس در کامنت همین مطلب به این پرسش‌ها پاسخ دهید:

  •  API چه نقشی در استخراج داده ایفا می‌کند و چگونه می‌توان با استفاده از پایتون به داده‌ها دسترسی پیدا کرد؟
  • کتابخانه requests در پایتون چگونه به برنامه‌نویسان امکان می‌دهد که با API‌ها کار کنند و چه تفاوت‌هایی با پکیج urllib دارد؟
  • یکی از کاربردهای استفاده از API در استخراج داده چیست و چگونه می‌توان از آن برای انتشار خودکار پست‌های رسانه‌های اجتماعی استفاده نمود؟

هفت‌خوان‌پلاس

برای بالابردن شانس‌تان می‌توانید این مطلب را هم مطالعه کنید و به پرسش‌های آن پاسخ دهید:

آموزش Google Colab برای دانشمندان داده