Webscraping با استفاده از Python – DEV Community

Summarize this content to 400 words in Persian Lang
اصول طراحی وب
Webscraping ابزار قدرتمندی است که به شما امکان می دهد بدون استفاده از API به داده های ارزشمند وب سایت دسترسی داشته باشید. برخی از وب سایت ها حاوی اطلاعات در HTML خود هستند، اما API ندارند که بتوانید از آن استفاده کنید. اگر دادههای یکی از این وبسایتها را میخواهید، میتوانید از Webscraping استفاده کنید. Webscraping از طریق HTML یک وب سایت انجام می شود و به شما امکان می دهد داده های مورد نظر خود را با تجزیه از طریق HTML استخراج کنید. بستههایی مانند BeautifulSoup، درخواستها و Scrapy برای کمک به این فرآیند استفاده میشوند. در این پست، من اصول استفاده از BeautifulSoup را برای دریافت اطلاعات از یک وب سایت بررسی می کنم.
چرا از وب اسکرپینگ استفاده کنیم؟
موارد استفاده زیادی وجود دارد که در آن خراش دادن وب، دستیابی به عملکرد مورد نظر شما را آسان تر و کارآمدتر می کند. به عنوان مثال، یک شرکت ممکن است از webscraping برای انجام تحقیقات بازار، با مرور وب سایت ها، استخراج، قیمت ها، بررسی ها و جزئیات محصول استفاده کند. بدیهی است که جمع آوری همان داده ها به صورت دستی فرآیند بسیار پر زحمت و کندتر خواهد بود. یکی دیگر از موارد استفاده برای webscraping، جمع آوری محتوا از چندین وب سایت بدون نیاز به ورود دستی است. کاربردهای webscraping بسیار فراتر از این نمونه ها است و آن را به ابزاری ضروری در جمع آوری داده ها تبدیل می کند.
نمونه خراش دادن وب
در اینجا یک مثال بسیار ساده نشان می دهد که چگونه می توانید از BeautifulSoup برای خراش دادن وب سایت و استخراج اطلاعات استفاده کنید.پس از نصب و وارد کردن تمام بسته های لازم، HTML را از وب سایت خود بازیابی کنید و از BeautifulSoup برای تجزیه HTML استفاده کنید:
html = requests.get(“https://information.com/”, headers=headers)
doc = BeautifulSoup(html.text, ‘html.parser’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این به شما یک متغیر doc میدهد که میتوانیم اطلاعات غیرضروری را از آن فیلتر کنیم و تنها قسمتهایی را که به دنبال آن هستیم باقی میماند. این دو روش BeautifulSoup هستند که برای فیلتر کردن و سادهتر کردن HTML استفاده میکنیم.
print(doc.select(‘.heading’)[0].contents)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این خط کد، همه عناصری را انتخاب می کنیم که با انتخابگر CSS مورد نظر (مانند کلاس، شناسه و غیره) 'heading' با استفاده از روش .select() مطابقت دارند. سپس با استفاده از اولین عنصر آن کلاس را می گیریم [0]، و متن آن را با دریافت ویژگی 'contents' استخراج کنید. محتویات فقط روی یک عنصر قابل استفاده هستند، بنابراین اگر بخواهید از آن در چندین عنصر استفاده کنید، خطایی ایجاد میشود. همچنین می توانید از متد get_text() استفاده کنید که اطلاعات مورد نظر شما را برمی گرداند.البته مراحل بیشتری برای فیلتر کردن، دستکاری و تجزیه و تحلیل دادههایی که خراشیدهاید وجود دارد، اما برای سادگی، عملکرد چاپ اطلاعات متن را از عنصر باقی میگذارم.
ذخیره و استفاده از داده های خراشیده شده
کتابخانههای مفید زیادی وجود دارند که به شما امکان میدهند به طور معناداری با دادههایی که از وب جدا کردهاید تعامل داشته باشید یا آنها را ذخیره کنید. پس از بررسی وب سایت، می توانید داده های جمع آوری شده را در پایگاه های داده sql برای دسترسی ساختاریافته به همه داده های خود ذخیره کنید. بعد از اینکه داده ها را در جدول خود وارد کردید، بسته های بیشتری وجود دارد که به شما امکان می دهد داده ها را تجسم یا تعامل کنید. به عنوان مثال، “pandas” یک کتابخانه همه کاره است که به شما امکان می دهد داده هایی را که ذخیره کرده اید کاوش، تجسم و دستکاری کنید. با استفاده از پانداها، می توانید داده ها را با استفاده از توابعی که میانگین، میانه و غیره را محاسبه می کنند و همچنین همبستگی های درون داده ها را تجزیه و تحلیل کنید. همچنین میتوانید دادهها را با استفاده از نمودارها، نمودارها و غیره تجسم کنید، زیرا پانداها با Matplotlib، یکی دیگر از کتابخانههای پایتون ادغام میشوند. میتوانید از پانداها برای «پاک کردن» دادههای خود استفاده کنید و به اصلاح مقادیر از دست رفته، موارد تکراری و اطلاعات غیر ضروری کمک کنید. از نظر دستکاری با استفاده از پانداها، عملکردهایی را ارائه می دهد که به شما امکان ادغام پایگاه داده ها را می دهد و به شما امکان می دهد اطلاعات مختلف را در یک جدول ادغام کنید. همانطور که می بینید، ابزارهای زیادی وجود دارد که می توانید از آنها برای استفاده بیشتر از اطلاعاتی که خراشیده اید استفاده کنید.من مشتاقانه منتظر استفاده از webscraping به روش های پیچیده تر در آینده هستم، و امیدوارم شما را در مورد ارزش بسیار زیاد آن متقاعد کرده باشم!
اصول طراحی وب
Webscraping ابزار قدرتمندی است که به شما امکان می دهد بدون استفاده از API به داده های ارزشمند وب سایت دسترسی داشته باشید. برخی از وب سایت ها حاوی اطلاعات در HTML خود هستند، اما API ندارند که بتوانید از آن استفاده کنید. اگر دادههای یکی از این وبسایتها را میخواهید، میتوانید از Webscraping استفاده کنید. Webscraping از طریق HTML یک وب سایت انجام می شود و به شما امکان می دهد داده های مورد نظر خود را با تجزیه از طریق HTML استخراج کنید. بستههایی مانند BeautifulSoup، درخواستها و Scrapy برای کمک به این فرآیند استفاده میشوند. در این پست، من اصول استفاده از BeautifulSoup را برای دریافت اطلاعات از یک وب سایت بررسی می کنم.
چرا از وب اسکرپینگ استفاده کنیم؟
موارد استفاده زیادی وجود دارد که در آن خراش دادن وب، دستیابی به عملکرد مورد نظر شما را آسان تر و کارآمدتر می کند. به عنوان مثال، یک شرکت ممکن است از webscraping برای انجام تحقیقات بازار، با مرور وب سایت ها، استخراج، قیمت ها، بررسی ها و جزئیات محصول استفاده کند. بدیهی است که جمع آوری همان داده ها به صورت دستی فرآیند بسیار پر زحمت و کندتر خواهد بود. یکی دیگر از موارد استفاده برای webscraping، جمع آوری محتوا از چندین وب سایت بدون نیاز به ورود دستی است. کاربردهای webscraping بسیار فراتر از این نمونه ها است و آن را به ابزاری ضروری در جمع آوری داده ها تبدیل می کند.
نمونه خراش دادن وب
در اینجا یک مثال بسیار ساده نشان می دهد که چگونه می توانید از BeautifulSoup برای خراش دادن وب سایت و استخراج اطلاعات استفاده کنید.
پس از نصب و وارد کردن تمام بسته های لازم، HTML را از وب سایت خود بازیابی کنید و از BeautifulSoup برای تجزیه HTML استفاده کنید:
html = requests.get("https://information.com/", headers=headers)
doc = BeautifulSoup(html.text, 'html.parser')
این به شما یک متغیر doc میدهد که میتوانیم اطلاعات غیرضروری را از آن فیلتر کنیم و تنها قسمتهایی را که به دنبال آن هستیم باقی میماند. این دو روش BeautifulSoup هستند که برای فیلتر کردن و سادهتر کردن HTML استفاده میکنیم.
print(doc.select('.heading')[0].contents)
در این خط کد، همه عناصری را انتخاب می کنیم که با انتخابگر CSS مورد نظر (مانند کلاس، شناسه و غیره) 'heading' با استفاده از روش .select() مطابقت دارند. سپس با استفاده از اولین عنصر آن کلاس را می گیریم [0]، و متن آن را با دریافت ویژگی 'contents' استخراج کنید. محتویات فقط روی یک عنصر قابل استفاده هستند، بنابراین اگر بخواهید از آن در چندین عنصر استفاده کنید، خطایی ایجاد میشود. همچنین می توانید از متد get_text() استفاده کنید که اطلاعات مورد نظر شما را برمی گرداند.
البته مراحل بیشتری برای فیلتر کردن، دستکاری و تجزیه و تحلیل دادههایی که خراشیدهاید وجود دارد، اما برای سادگی، عملکرد چاپ اطلاعات متن را از عنصر باقی میگذارم.
ذخیره و استفاده از داده های خراشیده شده
کتابخانههای مفید زیادی وجود دارند که به شما امکان میدهند به طور معناداری با دادههایی که از وب جدا کردهاید تعامل داشته باشید یا آنها را ذخیره کنید. پس از بررسی وب سایت، می توانید داده های جمع آوری شده را در پایگاه های داده sql برای دسترسی ساختاریافته به همه داده های خود ذخیره کنید. بعد از اینکه داده ها را در جدول خود وارد کردید، بسته های بیشتری وجود دارد که به شما امکان می دهد داده ها را تجسم یا تعامل کنید. به عنوان مثال، “pandas” یک کتابخانه همه کاره است که به شما امکان می دهد داده هایی را که ذخیره کرده اید کاوش، تجسم و دستکاری کنید. با استفاده از پانداها، می توانید داده ها را با استفاده از توابعی که میانگین، میانه و غیره را محاسبه می کنند و همچنین همبستگی های درون داده ها را تجزیه و تحلیل کنید. همچنین میتوانید دادهها را با استفاده از نمودارها، نمودارها و غیره تجسم کنید، زیرا پانداها با Matplotlib، یکی دیگر از کتابخانههای پایتون ادغام میشوند. میتوانید از پانداها برای «پاک کردن» دادههای خود استفاده کنید و به اصلاح مقادیر از دست رفته، موارد تکراری و اطلاعات غیر ضروری کمک کنید. از نظر دستکاری با استفاده از پانداها، عملکردهایی را ارائه می دهد که به شما امکان ادغام پایگاه داده ها را می دهد و به شما امکان می دهد اطلاعات مختلف را در یک جدول ادغام کنید. همانطور که می بینید، ابزارهای زیادی وجود دارد که می توانید از آنها برای استفاده بیشتر از اطلاعاتی که خراشیده اید استفاده کنید.
من مشتاقانه منتظر استفاده از webscraping به روش های پیچیده تر در آینده هستم، و امیدوارم شما را در مورد ارزش بسیار زیاد آن متقاعد کرده باشم!