- مهرداد حیدری
- 28 فروردین, 1401
- 0 Comments
- 27 Secs Read
وب اسکرپینگ با پایتون و کتابخانه Beautiful Soup
وب اسکرپینگ با پایتون و کتابخانه Beautiful Soup : چگونه اطلاعات سایت را بیرون بکشیم!
اینترنت پره از داده و اطلاعاتی که هر شخصی بهش نیاز داره. پس تا تموم نشده بجنب که بریم جمعش کنیم. با کتابخونه requests در مقاله قبلی آشنا شدیم درسته؟ ولی اگه یادتون باشه یه مشکل داشتیم که فقط درخواست و ارسال می کردیم و خیلی نتونستیم داده ها رو جمع آوری کنیم در اصل بیشتر برای ارسال درخواست بود نه گردآوری اطلاعات از سایتها.
خب حالا به نظرت ما چطوری میتونیم اون اطلاعات و داده ای که میخواییم و از سایت بکشیم بیرون و برای خودمون تو یه فایلی ذخیره کنیم؟ آیا به نظرت میتونیم این کار و کنیم؟
وا مگه داریم؟ مگه میشه؟ …بله … چرا نشه؟ مگه چیزی هست که با لرن پایتون نشه حل کرد بابا مارو دست کم گرفتیا!!
اعتبار لرن پایتون به همین شفاف بودن با رفیقاشه(با تواما رفیق عزیز)
کتابخونه Beautiful Soup همونیه که ما میخواییم. ببین دوست گلم اگه میخوای یاد بگیری که با این کتابخونه چطوری کار کنی یه بسم الله بگو و همراهم شو.
مراحل گام به گام وب اسکرپینگ با کتابخانه BeautifulSoup
در مقالههای قبلی در مورد وب اسکرپینگ و کتابخانه requests صحبت کردیم اگر آشنا نیستید میتونید به مقالههای web scraping و requests مراجعه کنید(بیا درگوشت یه چیزی بگم وقتی میگم برو فلان مقاله رو ببین به حرفم گوش کن ضرر نمیکنی برای شروع مجدد سعی کن اطلاعات پایه ای رو محکم کنی).
کتابخانههای وب اسکرپینگ با پایتون شامل requests و Beautiful Soup ابزارهای قدرتمندی برای استخراج داده هستند.اینم بگم که فقط اینا نیستا کتابخونه های دیگه ای هم داریم به وقتش بهشون میرسیم آسیاب به نوبت.
فک کنم دیگه بعد دو مقاله قبلی لازم نباشه اینجا بگم که لازمهی ادامه مسیر آشنایی مقدماتی با پایتون هستش (داخل پرانتز برای کسایی که تازه به جمع ما ملحق شدن قبل خوندن ادامه این مقاله یه سر به آموزش رایگان پایتون در یک ساعت بزنن)
در این آموزش یاد میگیریم که چگونه:
– از کتابخانه Beautiful Soup برای اسکرپینگ و پارس دادهها از وب استفاده کنیم.
– هدف استخراج داده ها و اطلاعات از سایت و ذخیره کردن در فایل مورد نظر.
Beautiful Soup چیه؟
بعد این همه مقدمه حالا رسیدیم به اینکه اصلاً کتابخانه beautiful soup چیه ؟
کتابخانه Beautiful Soup یکی از کتابخانههای وب اسکرپینگ هست که قابلیتهای بسیار زیادی دارد در عین سادگیش بسیار قدرتمنده و برای استخراج اطلاعات از فایل html و xml استفاده میشه. همچنین برای وبسایتهای استاتیک .
خب الان میپرسی وب سایت استاتیک یعنی چه؟(با لهجه برره ای)
ما دو نوع سایت داریم یکی استاتیک(Static) و دیگری پویا(Dynamic)
در سایت استاتیک اطلاعات ثابت هست و یا اینکه به ندرت بروز می شوند . این نوع سایتها با html,css,javascript ساخته میشوند و یک بار طراحی میشن و برای ایجاد تغییرات باید html بلد باشید.یعنی فقط یه برنامه نویس میتونه تغییرات و اعمال کنه.
هزینه راه اندازیشون نسبت به سایتهای پویا پایین تره.
این نوع وبسایتها برای سازمانهایی مناسبه که حداکثر یک یا دوبار در سال اطلاعت سایتشونو بروز رسانی میکنند.
سایت داینامیک این قابلیتو داره که مرتب اطلاعاتشون بروزرسانی میشه و اصلاً دیگه لازم نیست برای بروزرسانی برنامه نویسی بلد باشید. این وبسایتها برای ساختشون علاوه بر html از تکنولوژی های سمت سرور هم استفاده میکنند(مثلا php.net)
لٌپ کلام : وب سایتهایی که خدمات آنلاین ارائه میدن میشن همین وبسایت پویا (مثل اپلیکیشن اینستاگرام، کیه که اینستاگرام و نشناسه!)
در کتابخانه Beautiful Soup بعد از ارسال درخواست با استفاده از parse(تجزیه داده) html و xml را parse میکنه تا دیتا موردنظر ما را استخراج کند.(نگران نباشا تو پایین کامل جزئیاتشو میگم)
مراحل نصب و راهاندازی کتابخانه Beatiful Soup:
1- با استفاده از روش زیر کتابخانه Beautiful Soup را نصب میکنیم.(این دستور و تو cmd ویندوز باید وارد کنید یا محیط shell پایتون،تو مقاله قبلی بهش اشاره کردیم)
2- سپس کتابخانه Beautiful Soup را ایمپورت (import) میکنیم با دستور زیر:
3- در ابتدای کار باید صفحه درخواستی رو ارسال کنیم که این مبحثو در مقاله وب اسکرپینگ با requests گفتیم با استفاده از کتابخانه requests این کار رو انجام میدیم.
4- ایجاد شئ soup : حالا محتوای صفحه html را با استفاده از متد text یا content در شی soup قرار میدیم.( html.parser این عبارت هم برای پارس کردن صفحه هست که داده هارو تجزیه میکنه وبا متد text به ما نشون میده)
خب تا اینجای کار با کتابخانه Beautiful Soup اوکی هستید؟ مشکلی که ندارید ؟ بریم به ادامه …
سپس در سایت مورد نظرمون راست کلیک می کنیم و inspect رو انتخاب، این کار برای نمایش سورس کد(html)صفحه هست. در اصل این کار و انجام میدیم که بدونیم کدوم بخش یا تگ رو از سایت استخراج کنیم.
یه گریزی بزنیم به html:
برای اینکه کامل مبحث تفهیم بشه وقتی inspect سایت رو نگاه کنید یک فایل html میبینید تو این فایل از تگهای مختلف استفاده شده خب مثلا تو سایت کتابفروشی من میخوام عنوان های کتاب رو دربیارم چیکار میکنم؟
تو html تو گوشه بالا سمت چپ علامت فلش هست اونو میزنم تا وقتی روی عنوان کتاب تو سایت اصلی کلیک کنم تگ مورد نظرشو تو html برام نشون بده به همین سادگی!
وقتی تگ و نشون داد به احتمال قوی داخل یه تگ a نوشته شده که این تگو تو قسمت “Find” مینویسم که در ادامه توضیح دادیم.
5- بر اساس نیاز خود مثلاً تمام تگهای “a ” در صفحه را میخواهیم استخراج کنیم مانند دستور زیر مینویسیم:
یعنی بیا تمام تگ های “a” رو برام پیدا کن و بزارش تو links . سپس برام پرینت کن تا ببینم چیا رو برام استخراج کردی. همین!
6- ذخیره داده های استخراج شده با پانداس:
حالا وقتش رسیده که داده هایی که از سایتها بیرون کشیدیم و تو فایلی ذخیره کنیم، برای این کار چندین روش وجود داره ولی ما در اینجا از pandas استفاده می کنیم.
اول باید pandas را ایمپورت کنیم به اینصورت:
سپس دیتا فریم و تشکیل بدیم.
به این ترتیب داده ها بصورت جدولی در df ذخیره میشه.
یه نگاه کلی به مثالی که انجام دادیم برای سایت www.opencodez.com بندازید و خودتون این مثال و برای سایتهای دیگه انجام بدید تا کامل ملکه ذهنتون بشه.
خلاصه و جمعبندی:
وب اسکرپینگ با کتابخانه Beautiful Soup رو با کمک شما بررسی کردیم و نحوه استخراج داده از سایتهای ایستا را یاد گرفتیم قطعاَ برای کسایی که علاقهمند به استخراج یا گردآوری دیتاست هستند بسیار جذاب و مفید بود در اینجا یک سؤال ذهنتونو درگیر میکنه که چرا فقط سایتهای ایستا پس برای سایتهای پویا مثل شبکههای اجتماعی آیا از کتابخانه Beautiful Soup نمیتوانیم استفاده کنیم؟
در پاسخ به شما لرن پایتونی عزیز بگم که برای سایتهای پویا از کتابخانه دیگری بنام Selenium استفاده میشه که در مقاله بعدی در مورد نحوه استفاده از این کتابخانه مفصل صحبت خواهیم کرد و برای درک بهتر به ساخت ربات اینستاگرام با پایتون و ربات واتساپ با پایتون مراجعه کنید. ممنون از اینکه همراه ما در این سفر هیجانانگیز بودید. منتظر نظرات دلنشین شما عزیزان هستیم.