یک اسکریپت پایتونی
خبردار شدم انتشارات اشپرینگر چند صد کتاب خودش رو به صورت رایگان در اختیار عموم قرار داده و فایل pdf عنوان و لینک این کتابها هم به دستم رسید. اسامی رو که خوندم متوجه شدم کتابها مربوط به موضوع خاصی نیستن و لزوما به درد من نمیخورن. از طرفی هم مجانی بودن کتابهای خارجی برای ما ایرانیها تازگی نداره و هر وقت اراده کنیم میتونیم به اکثر منابع علمی پولی خارجی مثل مقالات و کتابها دسترسی رایگان یا خیلی نزدیک به رایگان داشته باشیم. پس از این بابت هم این خبر جذابیت خاصی نداشت. اما برای من این جالب بود که اسکریپتی به زبان پایتون دوستداشتنی بنویسم و همهی کتابها رو یکجا دانلود کنم.

قدم اول – متن فایل پیدیاف رو انتخاب و داخل یه فایل متنی کپی کردم. طبیعتا چون فایل به صورت جدول بود، کپی در فایل متنی نوشتهها رو به هم میریزه. اما وجود الگوی مشخص برای لینکهای صفحات کتاب کمک میکنه با استفاده از ماژول re پایتون همهی لینکها رو از این متن درهم استخراج کنیم.
قدم دوم – با استفاده از ماژول requests پایتون میتونیم محتوای صفحهی این لینکها رو که مربوط به معرفی کتاب و لینک دانلود اونها هستن بخونیم.
قدم سوم – هر صفحهی دانلود کتاب شامل چندین لینک پیدیاف هست که به دانلود کتاب و همینطور دانلود فصلها و بخشهای مختلف اون اشاره دارن. اما خوشبختانه باز هم ساختار همهی لینکهای دانلود مثل هم و اولین لینک در هر صفحه هم مربوط به دانلود کل کتاب هست. پس باز میتونیم با ماژول re اولین لینک پیدیاف هر صفحه رو استخراج کنیم.
قدم چهارم – لینکهاس استخراج شده در مرحلهی قبل رو به صورت باینری با استفاده از ماژول requests دانلود و با پسوند pdf روی فضای محلی خودمون ذخیره میکنیم.
قدم پنجم – برای اینکه فایلهای دانلود شده قاطی نشن میتونیم اسامی معنیدار برای هر فایل انتخاب کنیم. با بررسی صفحهی دانلود هر کتاب متوجه میشیم که title هر صفحه شامل اسم کتاب هم هست و باز با استفاده از ماژول re میتونیم اسم کتاب رو هم از عنوان صفحه استخراج و فایل مرحلهی قبل رو با اسم خود کتاب ذخیره کنیم.
این توضیحات با حدود ۱۰ خط کد پایتون پیادهسازی میشه و بعد از اجرا حدود چهارصد کتاب رایگان اشپرینگر در اختیار شماست. اما اگر از مصرف پهنای باند اینترنت یا فضای هارد خودتون نگرانید، میتونید کدها رو روی Google Colab اجرا و کتابها رو روی Google Drive شخصی خودتون ذخیره کنید و به وقت نیاز سراغشون برید.
کارهای جالب دیگهای هم میشه روی همین دیتای ساده انجام داد. مثلا فقط کتابهایی رو دانلود کنیم که مربوط به رشتهی خودمون هستن یا کتابها رو بعد از دانلود متناسب با موضوع اونها در پوشههای مختلف ذخیره کنیم. و دیگه؟