وب اسکرپینگ (Web Scraping) در پایتون

وب اسکرپینگ (Web Scraping) در پایتون
اگر به علم داده علاقه دارید، به زودی متوجه خواهید شد که یکی از مهم ترین مهارت هایی که نیاز دارید، توانایی استخراج داده ها از وب سایت ها است. این تکنیک وب اسکرپینگ (Web Scraping) نامیده می شود و زمانی که به درستی انجام شود می تواند فوق العاده قدرتمند باشد. در این مقاله، اصول اولیه وب اسکرپینگ در پایتون را بررسی خواهیم کرد.
وب اسکرپینگ، فرایند جمعآوری دادهها از صفحات وب به صورت خودکار با استفاده از روشهایی مانند رباتهای جستجوگر یا تکنیکهای دیگر است. با استفاده از وب اسکرپینگ، میتوان اطلاعات مختلفی مانند محتوای وب سایتها، اطلاعات مربوط به محصولات و خدمات، قیمتها، دادههای مربوط به شرکتها و سایر اطلاعات مورد نیاز دیگر را به صورت خودکار جمعآوری کرد. با این حال، باید توجه داشت که وب اسکرپینگ باید به روشهای قانونی و با رعایت حقوق مالکیت فکری و محرمانگی دادهها صورت پذیرد.
کتابخانههای پایتون برای Web-Scraping
پایتون چندین کتابخانه دارد که می توان از آنها برای Web Scraping استفاده کرد. محبوب ترین آنها BeautifulSoup و Scrapy هستند. BeautifulSoup یک کتابخانه پایتون است که برای پروژه های کوچک عالی است و استفاده از آن آسان است. از طرف دیگر، Scrapy یک چارچوب قدرتمندتر است که برای پروژه های بزرگتر مناسب تر است. کتابخانه های دیگری نیز مانند selenium ،Urllib3 ،Lxml وجود دارند.
بیشتر بخوانید: انواع کتابخانه های پایتون برای تست نفوذ
وب اسکرپینگ یک وب سایت با BeautifulSoup
برای Web Scraping یک وب سایت با استفاده از BeautifulSoup، ابتدا باید یک درخواست به سرور وب سایت ارسال کنید و سپس محتوای HTML را دریافت کنید. در اینجا یک مثال ساده از نحوه استفاده از BeautifulSoup برای استخراج عناوین از یک وب سایت خبری آورده شده است.

در این مثال، ما از کتابخانه requests برای ایجاد یک درخواست GET به وب سایت kaliboys.com استفاده می کنیم. سپس از BeautifulSoup برای تجزیه محتوای HTML وب سایت و استخراج همه تگ های p با کلاس post-title استفاده می کنیم.
در خط های بعدی از حلقه استفاده میکنیم تا بتوانیم تمام مقادیر را در خروجی نمایش دهیم.
خروجی :
چگونه یک متن رمزی بنویسیم؟ سایت تولید محتوا متنی خوب چه ویژگی هایی باید داشته باشه؟ خرید جم فری فایر همراه با هدیه از ارزان جم حمله جدول رنگین کمانی چیست؟ نحوه بکاپ گرفتن از ویندوز سرور سرویس رادار گیم برای کاهش پینگ بازی ها پیدا کردن پسورد وای فای های متصل در لینوکس
کتابخانه BeautifulSoup در پایتون
BeautifulSoup کتابخانه پایتون است که برای Web-Scraping و بیرون استخراج داده ها از فایل های HTML و XML استفاده می شود. از این کتابخانه می تواند برای استخراج داده ها به شیوه ای سلسله مراتبی و قابل درک تر استفاده شود.

این قطعه کد نحوه استفاده از BeautifulSoup برای استخراج title از صفحه kaliboys را نشان می دهد. تابع requests.get() برای ارسال درخواست به وب سایت و دریافت محتوای HTML آن استفاده می شود. سپس از تابع BeautifulSoup برای تجزیه محتوای HTML به یک شی BeautifulSoup استفاده می شود. در نهایت، تابع «()find» برای مکان یابی تگ عنوان در HTML و استخراج متن آن استفاده می شود.
BeautifulSoup بسیاری از توابع مفید دیگر را برای scraping وب فراهم می کند، مانند ()find_all()، select و ()prettify. از این توابع را می توان برای استخراج داده های خاص از فایل های HTML و XML برای اهداف مختلف استفاده کرد.
BeautifulSoup اغلب به همراه کتابخانه requests استفاده می شود که برای درخواست HTTP به وب سایت ها استفاده می شود و علاوه بر تجزیه محتوای HTML و XML میتواند با JSON و CSV نیز کار کند.
در اینجا مثال دیگری از نحوه استفاده از BeautifulSoup برای استخراج داده ها از جدول HTML آورده شده است:
در این مثال، ما درخواستی را به صفحه ویکیپدیا ارسال میکنیم که شامل جدولی از پرفروشترین محصولات دارویی است. ما از BeautifulSoup برای تجزیه محتوای HTML و مکان یابی جدول در صفحه با استفاده از نام کلاس آن استفاده می کنیم. سپس سطرها را از جدول استخراج می کنیم و داده های هر ردیف را چاپ می کنیم.
این نشان می دهد که چگونه می توان از BeautifulSoup برای استخراج داده های ساختار یافته از جداول HTML استفاده کرد. راه های دیگری برای استفاده از BeautifulSoup برای Web-Scraping وجود دارد و قابلیت های آن را می توان با استفاده از کتابخانه ها و ماژول های اضافی پایتون گسترش داد.
مدیریت مشکلات در وب اسکرپینگ با پایتون
Web-Scraping می تواند یک کار چالش برانگیز باشد و معمولاً در طول مسیر با مشکلاتی مواجه می شوید. در اینجا چند مشکل رایجی که ممکن است با آنها روبرو شوید و نحوه رسیدگی به آنها آورده شده است:
1. وب سایت درخواست های شما را مسدود می کند
برخی از وبسایتها ممکن است درخواستهای شما را مسدود کنند. برای جلوگیری از این امر، میتوانید header هایی را در درخواستهای خود قرار دهید. در اینجا مثالی از نحوه انجام این کار با استفاده از کتابخانه fake_useragent آورده شده است:
2. وب سایت های پویا (Dynamic Websites)
برخی از وب سایت ها پویا هستند، به این معنی که محتوا با استفاده از جاوا اسکریپت تولید می شود. در این موارد، میتوانید از ابزاری مانند selenium استفاده کنید و کاری کنید که وب سایت فکر کند ابزار شما به عنوان یک کاربر است. در اینجا مثالی از نحوه استفاده از سلنیوم برای Web-Scraping وب سایت پویا آورده شده است:

3. کپچا داشتن سایت (Captchas)
برخی از وب سایت ها ممکن است از کپچا برای جلوگیری از Web-Scraping استفاده کنند. در این موارد می توانید از سرویسی مانند 2captcha استفاده کنید تا کپچاها را برای شما حل کند. در اینجا مثالی از نحوه استفاده از 2captcha با پایتون آورده شده است:
قوانینی که باید هنگام وب اسکرپینگ رعایت کنید
۱. Robots.txt را دنبال کنید
فایل robots.txt استانداردی است که توسط وب سایت ها برای برقراری ارتباط با scraper ها و سایر عوامل خودکار استفاده می شود. به آنها میگویند به کدام بخشهای وبسایت اجازه دسترسی دارند و به کدام بخشها نمیتوانند دسترسی داشته باشند. برای جلوگیری از مسدود شدن توسط وب سایت، پیروی از دستورالعمل های تعیین شده در فایل robots.txt بسیار مهم است.
۲. در صورت امکان از API ها استفاده کنید
اگر یک وب سایت API ارائه می دهد، به طور کلی بهتر است به جای Scraping وب سایت از آن استفاده کنید. API ها به گونه ای طراحی شده اند که به شما امکان دسترسی به داده های مورد نیاز خود را به روشی ساختاریافته می دهند و کار با آنها را آسان تر می کند.
۳. سیاست وب سایت
اطمینان حاصل کنید که شرایط و ضوابط وب سایت و سیاست حفظ حریم خصوصی را قبل از Web-Scraping بررسی کنید. برخی از وبسایتها ممکن است قوانین خاصی داشته باشند که Web-Scraping را ممنوع کرده یا میزان دادههایی را که میتوانید استخراج کنید محدود میکند.
بیشتر بخوانید:
