مقدمه
در این درس، ما با یک API دیگر، یعنی API وبسایت Hacker News، کار خواهیم کرد. Hacker
News یک وبسایت اخبار اجتماعی است که بر روی علوم کامپیوتر و کارآفرینی تمرکز
دارد. API آن به ما اجازه میدهد تا به صورت برنامهنویسی به مقالات پرطرفدار و اطلاعات مربوط به
آنها دسترسی پیدا کنیم. این پروژه به ما کمک میکند تا مهارتهای خود در ارسال درخواستهای API و
پردازش پاسخهای JSON را تقویت کنیم.
دریافت شناسههای مقالات پرطرفدار
اولین فراخوانی API ما، لیستی از شناسهها (IDs) مربوط به پرطرفدارترین مقالات فعلی را برمیگرداند.
PYTHON
import requests
import json
url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)
print(f"Status code: {r.status_code}")
submission_ids = r.json()
این کد یک درخواست GET به اندپوینت topstories ارسال کرده و لیستی از شناسههای عددی را در
متغیر submission_ids ذخیره میکند.
دریافت جزئیات هر مقاله
اکنون که شناسهها را در اختیار داریم، باید برای هر شناسه، یک درخواست API جداگانه ارسال کنیم تا
جزئیات مربوط به آن مقاله (مانند عنوان، لینک و امتیاز) را دریافت کنیم.
PYTHON
submission_dicts = []
for submission_id in submission_ids[:30]:
url = f"https://hacker-news.firebaseio.com/v0/item/{submission_id}.json"
r = requests.get(url)
print(f"id: {submission_id}\tstatus: {r.status_code}")
response_dict = r.json()
submission_dict = {
'title': response_dict['title'],
'hn_link': f"http://news.ycombinator.com/item?id={submission_id}",
'comments': response_dict['descendants'],
}
submission_dicts.append(submission_dict)
submission_dicts = sorted(submission_dicts, key=lambda item: item['comments'], reverse=True)
for submission_dict in submission_dicts:
print(f"\nTitle: {submission_dict['title']}")
print(f"Discussion link: {submission_dict['hn_link']}")
print(f"Comments: {submission_dict['comments']}")
در این کد، ما روی ۳۰ شناسه اول حلقه زده و برای هر کدام یک درخواست API جدید ارسال میکنیم. سپس،
از پاسخ دریافت شده، یک دیکشنری با اطلاعات مورد نیاز خود میسازیم.
در نهایت، ما لیست دیکشنریها را بر اساس تعداد کامنتها (descendants) به صورت نزولی مرتب
کرده و اطلاعات مقالات پربحث را در ترمینال چاپ میکنیم.
در این درس، ما با کار بر روی یک پروژه عملی دیگر، مهارتهای خود در استفاده از APIهای وب را تقویت
کردیم. با این درس، فصل «کار با APIها» به پایان میرسد. شما اکنون میتوانید به صورت برنامهنویسی
دادهها را از منابع مختلف وب دریافت، پردازش و مصورسازی کنید. در فصل بعدی، به سراغ یکی از
محبوبترین حوزههای کاربردی پایتون، یعنی «شروع به کار با Django» خواهیم رفت و اولین قدمها را
برای ساخت وب اپلیکیشنهای کامل برخواهیم داشت.