انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: کراول کردن وبسایت  (دفعات بازدید: 1249 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین abc

  • Full Member
  • *
  • ارسال: 144
  • جنسیت : پسر
کراول کردن وبسایت
« : 08 تیر 1403، 11:05 ب‌ظ »
بدون داشتن سایت‌مپ و سرج‌انجین داخلی در سایت چی جوری می‌شود یک سایت را کامل کراول کرد؟ آیا متد‌های خاضی برای این کار وجود دارد؟‌ مثلا هر چی لینک داخلی هست را ذخیره کنم و بعد داخلی آن لینک داخلی‌ها باز هرچی لینک داخلی بود. اصلا گوگل و... چی جوری کراول می‌کنند (البته بدون داشتن موارد بالا)
~

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1268
  • جنسیت : پسر
پاسخ : کراول کردن وبسایت
« پاسخ #1 : 08 تیر 1403، 11:44 ب‌ظ »
بهتره برای چنین پرسشی‌ با مثال پیش برید و سوال را دقیق بپرسید.
دقیقا داده‌های چه سایتی را می‌خواهید بگیرید و کاربردش چیه؟

به طور کلی کلید‌واژه‌های زیر را جستجو کنید.
crawler with python
scraping websites with python
پیوند زیر هفت نمونه از کتابخانه‌های پایتون برای این کار را فهرست کرده است.

https://www.zenrows.com/blog/python-web-scraping-library#best-python-scraping-libraries




ویرایش

موضوع مرتبط



« آخرین ویرایش: 09 تیر 1403، 01:32 ب‌ظ توسط esmaeelE »

آفلاین جادی

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1609
    • در دفاع از آزادی بیان
پاسخ : کراول کردن وبسایت
« پاسخ #2 : 09 تیر 1403، 12:54 ب‌ظ »
با دستوری مثل wget می تونی بگی برو فلان صفحه، هر چی برای نمایشش لازمه رو دانلود کن، هر لینکی هم توش دیدی برو تو و اونم ذخیره کن و ...
آزادی کیبورد حق هر انسان است - جادی

آفلاین abc

  • Full Member
  • *
  • ارسال: 144
  • جنسیت : پسر
پاسخ : کراول کردن وبسایت
« پاسخ #3 : 09 تیر 1403، 06:58 ب‌ظ »
نقل‌قول
دقیقا داده‌های چه سایتی را می‌خواهید بگیرید و کاربردش چیه؟
سایت خاصی مدنظرم نبود. مشکلی از بابت یک یا دو سایت خاص ندارم. چون اونجوری سایت رو نگاه می‌کنم متانسب با آن طراحی می‌کنم. ولی خب می‌خواستم ببینم می‌شه اسکریپ کلی‌تری تهیه کرد.
نقل‌قول
با دستوری مثل wget می تونی بگی برو فلان صفحه، هر چی برای نمایشش لازمه رو دانلود کن، هر لینکی هم توش دیدی برو تو و اونم ذخیره کن و ...
ممنون آقای جادی عزیز. پس در کل باید خودم  لینک‌ها را پیدا کنم. بیشتر دنبال چیزی بودم که مثلا به سرور سایت درخواست بفرستم و آن هم برایم سایت‌مپ سایت یا لیست لینک‌های داخلی‌اش را در یک json بفرسته که فکر کنم توقع بی‌جایی داشتم  ;D
~

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1268
  • جنسیت : پسر
پاسخ : کراول کردن وبسایت
« پاسخ #4 : 12 تیر 1403، 11:15 ق‌ظ »
سایت خاصی مدنظرم نبود. مشکلی از بابت یک یا دو سایت خاص ندارم. چون اونجوری سایت رو نگاه می‌کنم متانسب با آن طراحی می‌کنم. ولی خب می‌خواستم ببینم می‌شه اسکریپ کلی‌تری تهیه کرد.

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


همانطوری که در پیوند فرستهٔ پیشین می‌تونید ببینید با ابزارهایی مانند lynx می‌توانید فهرستی از تمام پیوندهای یک وبسایت بدست بیارید.

lynx -dump -listonly http://hosseinmohri.com

برای تمرین

سعی کنید فهرست ویدیوهای اینجا را بگیرید و چند تا را دریافت کنید.
ترکیب lynx, wget/aria2 یا به کلی با پایتون پیاده‌سازی کنید.
https://farachart.com/19921


اینجا را برای انجام تحلیل روی داده‌ها پس از استخراج ببینید.

بررسی آماری تعداد تکرار واژگان در ضرب‌المثل‌های فارسی
https://virgool.io/@mostafaasadi/persian-proverb-analyze-bbnp6l5vpmz2

آفلاین goldenthing

  • Newbie
  • *
  • ارسال: 13
  • جنسیت : دختر
پاسخ : کراول کردن وبسایت
« پاسخ #5 : 12 تیر 1403، 05:20 ب‌ظ »
با دستوری مثل wget می تونی بگی برو فلان صفحه، هر چی برای نمایشش لازمه رو دانلود کن، هر لینکی هم توش دیدی برو تو و اونم ذخیره کن و ...

آیا این کار نیاز به دومین داره؟ آی پی عومی چطور؟ من میتونم یه کامپیوتر بیکار رو به یک کرالر تبدیل کنم؟ ممنون میشم اگه بیشتر توضیح بدید یا مقاله/ویدیو پیشنهاد کنید.

آفلاین abc

  • Full Member
  • *
  • ارسال: 144
  • جنسیت : پسر
پاسخ : کراول کردن وبسایت
« پاسخ #6 : 12 تیر 1403، 08:19 ب‌ظ »
lynx -dump -listonly http://hosseinmohri.com

آقا این خیلی سر راست بود. همه‌ی لینک‌های داخل صفحه را بر می‌گردونه. فکر کنم باید با همین دستور و با همان متد آقای جادی پیش برم کار کنه. یعنی یه set در پایتون درست کنم و لینک‌های داخلی رو بهش اضافه کنم و بعد همین طوری لا‌یه‌به‌لا پیش برم و اگر مثلا تا یه تعداد مشخص اندازه set تغییری نکرد کراول‌کردن متوقف بشه. فکر کنم اینجوری یه سایت‌مپ نسبتا خوب از سایت در اختیارم بذاره (الته با os.popen در پایتون خروجی می‌شه str که البته می‌شه دوباره تبدیلش کرد به لیست). ممنون از شما.
~

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1268
  • جنسیت : پسر
پاسخ : کراول کردن وبسایت
« پاسخ #7 : 13 تیر 1403، 12:27 ق‌ظ »
درسته با همین ایده می‌تونید پیش برید.
راه دیگه استفاده از امکانات خود پوسته نظیر pipe و ترکیب با سایر دستورات است.
lynx | uniq
توجه کنید که خود lynx امکان دریافت به صورت تو در تو ندارد(حداقل تا جایی که من فهمیدم)
و به این شکل باید عمل کنید که هر پیوندی که پیدا کردید اگر مربوط به صفحهٔ وب بود(مثلا پروندهٔ mp3 نبود) مجدد به عنوان ورودی lynx در نظر بگیرید.
در برنامه نویسی می‌تونید چنین منطقی را با تابع بازگشتی(Recursive Function) پیاده سازی کنید.

https://codingforseo.com/blog/extract-links-with-lynx/


ویرایش

می‌تونید به دستور lynx انتخاب  nonumbers- هم اضافه کنید تا پیش از پیوندها عدد نشون نده.


« آخرین ویرایش: 13 تیر 1403، 10:39 ب‌ظ توسط esmaeelE »