پیدا کردن تمامی لینک های یک صفحه سایت

چند روز پیش توی گوگل سرچ کردم گلچین آهنگ های مهستی، اولین سایتی که اومد رو باز کردم و دیدم 40 تا از برترین آهنگ های این خواننده رو گذاشتن، وقتی خواستم دانلود کنم متوجه شدم که باید 40 بار روی دکمه دانلود کلیک کنم تا بتونم گلچین رو دانلود کنم!!!

به این نتیجه رسیدم که باید اسکریپتی درست کنم که خیلی ساده بیاد و تمامی لینک هایی که توی یک سایت وجود داره رو لیست کنه.
درواقع لینک های توی هر سایت، داخل تگ <a> است،‌ و یکی از مقادیر این تگ href است که لینک داخلش نوشته شده. مثلا:

<a href="htps://example.com/songs/someOne_folan.mp3"> Text </a>

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

توی این مرحله با استفاده از Regex توی هر لینک دنبال یک پترن خاص گشتم، پترن این بود:
".*mp3.*"

این پترن توی هر لاین دنبال نوشته mp3 می‌گرده و اگر این نوشته پیدا بشه یک ابجکت match بر می‌گردونه که شامل خود اون خطی که داخلش mp3 وجود داشت میشه.
و در نهایت وقتی mp3 توی یک خط پیدا بشه، اون خط رو توی خروجی چاپ میکنم.

توی مورد من، من نیاز داشتم تا تمامی لینک های mp3 سایت رو بدست بیارم، اما گفتم شاید روزی نیاز باشه توی یک سایتی مشابه به این، نیازم بشه که تمامی لینک های mp4 یا gif یا هر لینک دیگه ای رو بدست بیارم، این شد که با کمی تغییرات کاری کردم برنامه یک آدرس سایت و یک پترن از ورودی بگیره. و دنبال لینک هایی با الگوی داده شده بگرده. و اگر اون الگو پیدا بشه لینک ها رو در خروجی چاپ کنه.

برنامه رو با یک readme کوچک که نحوه کار با برنامه رو توضیح میده توی گیت هاب منتشر کردم، امیدوارم به اندازه ای که برای من مفیده، برای شما هم باشه (;

لینک گیت هاب برنامه:

چنتا نکته:

1- پترن ریجکس ها به کپیتال بودن حروف حساس نیست.

2- اسم برنامه هم href شد، فقط چون href توی html مقدار لینک رو نگه میداره

3 Likes

ایول. بنظر خوب میاد.
ولی همین کار رو با یک خط توی wget هم فکر کنم میشه کرد. من چندباری نیازم شده استفاده کردم.
مثلاً:

3 Likes

سلام. مرسی.
تستش کردم اما mp3 ها رو دانلود نکرد

wget -c -A '*.mp3' -r -l 1 -nd the_site.com/some/song (دانلود گلچین بهترین آهنگ های "مهستی" mp3 (شاد و غمگین) - گیتار موزیک)