وب اسکریپینگ چیست ؟ بهترین ابزارهای وب اسکریپینگ کدامند ؟ آیا با کتابخانه Beautiful Soup آشنا هستید ؟ scrapy چیست ؟ در این مقاله از مجله هم رویش، قصد داریم نگاهی اجمالی به سه ابزار پرکاربرد و مهم در حوزه وب اسکریپینگ بیندازیم. این سه ابزار عبارتند از: Beautiful Soup، Selenium و Scrapy.

پس با ما همراه باشید!

فهرست مطالب
هر وسیله و ابزار، نقاط ضعف و قوت خودش را دارد!

وب اسکریپینگ چیست؟

وب اسکریپینگ، مفهومی است که روز به روز بر اهمیت آن افزوده می شود. حتما تاکنون این جمله را شنیده اید که “داده، نفت جدید است”. بنابراین اگر وب اسکریپینگ را به صورت “قابلیت گردآوری سریع انواع اطلاعات، تقریبا از هر وبسایت موجود” تعریف کنیم. فهمیدن این مطلب دشوار نخواهد بود که چرا ابزارها و کسب و کارهای زیادی وجود دارند که خدمات گوناگونی در زمینه وب اسکریپینگ ارائه می دهند.

 

 

هم رویش منتشر کرده است:

آموزش وب اسکریپینگ با پایتون _____ بسته مقدماتی

 

 

چیزی به نام محدودیت وجود ندارد!

شما می توانید از وب اسکریپینگ برای دریافت داده های گوناگون استفاده کنید. از اعداد و داده های متنی گرفته تا تصاویر، ویدئوها، صوت یا هر نوع داده دیگری که به ذهنتان برسد. از آنجا که تمامی وبسایت ها، قابلیت استفاده از API را (برای دریافت اطلاعات) به صورت یکپارچه و بی عیب و نقص در دسترس کاربران قرار نمی دهند. بنابراین در اغلب اوقات لازم است در کنار استفاده از روش های خوب و مسبوق به سابقه وب اسکریپینگ، از خلاقیت خود نیز بهره بگیریم.

طبیعتا هر چه ساختار یک وبسایت پیچیده تر باشد، نیاز است که از تکنیک های پیشرفته تر وب اسکریپینگ استفاده کنیم. اما شاید تعجب کنید اگر بگوییم جمع آوری داده ها و تهیه دیتاست مخصوص خودتان، آن هم بدون پرداخت هیچ هزینه ای، چقدر ساده است. این امر خصوصا زمانی سودمند خواهد بود که بخواهید نمونه کارها و رزومه تان در حوزه علم داده برجسته و پر و پیمان باشد!

 

سه گانه وب اسکریپینگ

در این مقاله، بر روی سه ابزار مختلف پایتون در حوزه وب اسکریپینگ تمرکز می کنیم. به جرأت می توان گفت این سه ابزار، تا حد بسیار زیادی، جوابگوی پروژه های شما در زمینه وب اسکریپینگ خواهند بود:

– Beautiful Soup

– Selenium

– Scrapy

بنابراین با ما همراه باشید تا در ادامه، ویژگی های اصلی، قابلیت ها و محدودیت های این ابزارهای مهم وب اسکریپینگ را بیان کنیم. و با ذکر مثال، کاربرد هر کدام از آن ها را بهتر متوجه شویم.

 

چگونه یک سوپ زیبا (Beautiful Soup) درست کنیم ؟!

می توان ادعا کرد کتابخانه Beautiful Soup بهترین راه برای ورود به دنیای وب اسکریپینگ است. خصوصا اگر پیش از این، تجربه ای در این حوزه نداشته باشید. آشنایی با چند تکنیک ساده پایتونی، نظیر پیمایش روی لیست ها و دیکشنری ها، و اندکی دانش پیرامون کتابخانه پانداس (pandas)، در تحلیل و ذخیره سازی داده های استخراج شده بسیار به شما کمک خواهد کرد.

بدون اغراق، کتابخانه Beautiful Soup، کاربرپسند ترین ابزار موجود در حوزه وب اسکریپینگ به شمار می آید. اما این ابزار کاربرپسند، نقاط ضعفی هم دارد. این کتابخانه، نسبت به سایر ابزارها، انعطاف پذیری پایینی در مواجهه با سایت های مختلف دارد. به گونه ای که در مواجهه با وبسایت هایی که از جاوا اسکریپت (JavaScript) استفاده می کنند، ناتوان است و عملکرد مناسبی ندارد.

 

کتابخانه Beautiful Soup چگونه کار می کند

وبسایت ها بر مبنای کد HTML ساخته می شوند (لااقل اکثر وبسایت ها اینگونه هستند!). اگر می خواهید کدهایی که در پشت پرده سایت مورد علاقه تان نوشته شده است را ببینید. کافیست از کلید های ترکیبی CTRL + U استفاده کنید (البته در مرورگر کروم! در سایر مرورگرها می توانید از گزینه “view source code” استفاده کنید). بدین ترتیب صفحه ای برای شما نمایش داده می شود که در آن، کد HTML وبسایت مورد نظر به همراه ساختار آن وجود دارد. این کد HTML، همان چیزی است که ما به Beautiful Soup تحویل می دهیم.

قدم اول در فرایند وب اسکریپینگ، معمولا استفاده از ماژول requests و متد get است. بدین صورت کد HTML صفحه مورد نظر را دریافت کرده و آن را در یک متغیر دلخواه ذخیره می کنید. پس از انجام این کار، همه چیز آماده است تا اطلاعات مورد نیازتان را استخراج کنید.

تنها کاری که لازم است انجام دهید این است که مقداری سوپ (soup) تهیه کنید! (حتما متوجه شدید که چرا اسم کتابخانه را گذاشتند سوپ زیبا! استفاده از شباهت لفظی میان soup و سوپ خوراکی، در فهم این مطلب بسیار جالب و مفید است!)

زمانی که کد HTML صفحه را دریافت و در یک متغیر دلخواه ذخیره کردید، باید آن را به یک شیء Beautiful Soup منتقل کنید. تا به شما این امکان را بدهد که به اجزای مختلف صفحه وبسایت دسترسی داشته باشید.

در این حالت، شیء مورد نظر در متغیری با نام فرضی soup ذخیره شده است. اکنون فرض کنید که قصد دارید عنوان (title) صفحه وبسایت را پیدا کرده و چاپ کنید. در اغلب اوقات، عنوان اصلی صفحه وبسایت در یک تگ “h1” قرار دارد. بنابراین می بینید که چقدر راحت می توانیم به اجزای مختلف سوپ (soup) تهیه شده دسترسی داشته باشیم!

دسترسی به برخی اجزای این سوپ ( که منظورمان همان تگ های HTML صفحه مورد نظر است!) نیازمند سعی و خطاست. البته منطق و روال کار در تمامی اوقات یکسان است. تنها تفاوت، به این برمی گردد که یک وبسایت تا چه اندازه خوب و منطقی سازماندهی و طراحی شده باشد و اینکه شما تگ های موردنیازتان را چگونه تعریف و پیدا کنید.

توجه: در پایان باید مجددا به این نکته توجه کنید که اگر می خواهید وب اسکریپینگ را بر روی وبسایت هایی که بر مبنای جاوا اسکریپت نوشته شده اند (یعنی از جاوا اسکریپت برای بارگذاری محتوای صفحه استفاده می کنند) انجام دهید. مواردی که تاکنون از Beautiful Soup بیان کردیم به تنهایی کارساز نخواهد بود. در این حالت، باید از ابزار دیگری به نام Selenium استفاده کنید.

 

به کمک سلنیوم (Selenium) ، گلیم خود را از آب بیرون بکشید!

زمانی که وارد دنیای وب اسکریپینگ می شوید، ناگزیر با سایت هایی مواجه خواهید شد که برای بارگذاری محتوای خود، از جاوا اسکریپت استفاده می کنند. این بدین معناست که باید موقتا و در کمال احترام(!) از Beautiful Soup فاصله بگیریم و به سراغ سلنیوم (Selenium) برویم.

اگر با جاوا اسکریپت آشنایی ندارید، بگذارید این طور برایتان توضیح دهیم. که بعضی وبسایت ها، به جای اینکه مطالب خود را به صورت ثابت و اصطلاحا ایستا به نمایش بگذارند، نیازمند پویایی و نوعی تعامل از سوی کاربران هستند. یعنی مثلا کاربر باید حتما دکمه ای را فشار دهد تا همه یا بخشی از اطلاعات صفحه نمایش داده شده یا بارگذاری شود.

توجه: حتما پیش از شروع وب اسکریپینگ از صفحات یک وبسایت، بررسی کنید که آیا آن وبسایت، به کاربران اجازه این کار را می دهد یا نه. هم چنین، یادتان باشد که نگاهی به فایل robots.txt بیندازید.

 

سلنیوم چگونه کار می کند؟

کتابخانه سلنیوم، با هدف انجام تست های خودکار بر روی وبسایت ها و وب اپلیکیشن ها به وجود آمد. به بیان ساده، سلنیوم مانند یک پنجره مرورگر خودکار عمل می کند. یعنی یک پنجره مرورگر را باز می کند. و به شما اجازه می دهد که در یک وبسایت دلخواه حرکت کنید. با آن تعامل داشته باشید. و اطلاعات مورد نظرتان را بیرون بکشید.

برای کار با سلنیوم، در ابتدا نیاز است که یک راه انداز یا وب درایور (webdriver) نصب کنید. این وب درایور، عملکرد یک پنجره مرورگر را شبیه سازی می کند. و در واقع از آن تقلید می کند. وب درایورهای مختلفی برای انواع مرورگرها وجود دارند اما هوشمندانه تر این است که وب درایور مربوط به مرورگری را نصب کنید. که کار با آن برایتان راحت تر است! وب درایور کروم (Chrome)، یک انتخاب مرسوم و مناسب است، هر چند می توانید از وب درایورهای مربوط به سایر مرورگرها نظیر فایرفاکس (Firefox) یا اوپرا (Opera) نیز استفاده کنید.

یک گزینه برای اجرای سلنیوم بدون اینکه نیاز باشد واقعا یک پنجره مرورگر را باز کنیم، استفاده از وب درایور PhantomJS است. پیشنهاد می کنیم حتما نگاهی به این وب درایور بیندازید. البته استفاده از این وب درایور، کمی پیچیده تر است.

توجه: برای این که مطمئن شوید یک وبسایت از جاوا اسکریپت استفاده می کند. با کلیک راست بر روی صفحه و انتخاب گزینه inspect، در کد مربوطه، به دنبال تگ هایی بگردید که شامل کد های جاوا اسکریپتی هستند. (این تگ ها معمولا به صورت <script> نمایش داده می شوند.)

پس از اینکه مراحل نصب و آماده سازی را به پایان رساندید، وقت آن است که به اسکریپ کردن یک وبسایت بپردازید! به محض باز شدن پنجره مرورگر خودکار، می توانید از طریق وب درایور با مرورگر خود تعامل داشته باشید.

 

توضیحات بیشتر

اگر قبلا با Beautiful Soup کار کرده باشید، دنبال کردن این مطالب بسیار برایتان ساده خواهد بود. در اینجا نیز از همان منطق همیشگی استفاده می کنیم. یعنی کد HTML مربوط به صفحه مورد نظر را دریافت می کنیم. در یک متغیر دلخواه مثل soup ذخیره می کنیم. و به کمک این متغیر، تگ های موردنظرمان را پیدا می کنیم. تنها تفاوت این است که به جای “soup”، با یک پنجره مرورگر به نام “webdriver” سر و کار داریم.

این پنجره مرورگر خودکارشده، با فراخوانی دستور زیر (البته برای مرورگر کروم) باز می شود:

webdriver.Chrome()

پس از باز شدن پنجره مرورگر، به کمک متد get، صفحه موردنظرتان را باز می کنید. در ادامه، فرض کنید که باید نام کاربری و رمز عبور را برای ورود به سایت وارد کنید. در این حالت، ربات ساخته شده با سلنیوم، به دنبال فیلد نام کاربری می گردد. و زمانی که آن را پیدا کرد، نام کاربری شما را در آن فیلد وارد می کند. سپس، همین روند را برای فیلد رمز عبور نیز انجام می دهد. در نهایت، بر روی دکمه “ورود” کلیک می کند. و وارد سایت می شود. به همین راحتی! تنها چالش موجود، این است که چگونه تگ ها و فیلدها را پیدا کند.

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

 

با استفاده از اسکریپی (Scrapy) مالک اینترنت شوید!

و همه چیز زمانی تغییر کرد که با Scrapy آشنا شدم. پس از آنکه مدت ها مشغول کار با Beautiful Soup و Selenium بودم. تصمیم گرفتم به سراغ Scrapy رفته و آن را کشف کنم.

وقتی که مفهوم این ابزار برایم جا افتاد و اولین اسپایدرم را به صورت رایگان درست کردم. در همین حد می توانم بگویم که احساس کردم دریچه ای از دنیای امکانات به روی من باز شده است.

(کم پیش می آید که ناگهان احساس هکر بودن به شما دست دهد. اما به لطف Scrapy، احتمالا این حس را تجربه می کنید. چرا که از ترمینال استفاده خواهید کرد. و در حالی که Scrapy، همزمان مشغول پردازش وظایف مختلفی است که به او سپرده اید، اطلاعات زیادی را برایتان چاپ می کند. زیبا نیست !؟)

 

اسکریپی (Scrapy) چگونه کار می کند

نکته اول در مورد این ابزار، این که به طرز عجیبی سریع است. البته این اتفاق برحسب تصادف رخ نداده است. بلکه به این دلیل است که اسکریپی، با استفاده از فریمورک Twisted Python نوشته شده است. این فریمورک، این قابلیت را به اسکریپی می دهد که وظایفش را به صورت همزمان و موازی با هم انجام دهد. و منتظر اتمام هر وظیفه نماند. (و به نظرم تا همین حد دانش از ساختار پشت پرده اسکریپی، کار ما را راه بیندازد!).

همچنین بد نیست بدانیم که اسکریپی، به وابستگی های خاصی نیاز ندارد. بنابراین یک ابزار قابل حمل و اصطلاحا portable است. و در هر جایی که پایتون نصب باشد، قابل پیاده سازی است.

البته همانطور که پیشتر اشاره شد، برای استفاده از اسکریپی، نیازی به دانستن فریمورک و ساختار پشت پرده آن ندارید (هر چند دانستن آنها هم خالی از لطف نیست). اگر قبلا کمی با ترمینال و خط فرمان (نظیر cmd) کار کرده باشید. پس مشکلی با نوشتن چند دستور در ترمینال اسکریپی نخواهید داشت!

 

اسپایدرهایی که خزش می کنند

برای اینکه اولین اسپایدر (spider) خود را بسازید (اسپایدرها، ربات های کوچکی هستند که برای خزیدن و اسکریپ کردن وبسایت ها ساخته می شوند). ابتدا در خط فرمان به اسکریپی دستور می دهید که یک اسپایدر جدید تولید کند.

 

 

(اگر کمی گیج شده اید که این ترمینال از کجا ظاهر شده، باید بگویم که این ترمینال، همان خط فرمانی است که وقتی عبارت cmd را در منوی start تایپ کرده و دکمه Enter را می زنید، باز می شود!)

دستوری که نوشتید، یکسری فایل های .py درون پوشه ای که دستور را اجرا کرده اید، تولید می کند. با استفاده از یک IDE دلخواه (نظیر PyCharm)، اسپایدر تولیدی را باز کرده و ویرایش کنید و پارامترهای زیر را برای آن تعیین کنید:

  • اسپایدر از چه دامنه ای (domain) شروع به اسکریپینگ کند.
  • اسپایدر در چه دامنه هایی مجاز به خزش و اسکریپینگ است.
  • اسپایدر چه اطلاعاتی را از صفحات بازدید شده دریافت و استخراج کند.

به منظور فیلتر کردن لینک های مشخصی که قصد داریم اسپایدر ما آنها را دنبال کند. می توانیم چیزی مشابه این را بیان کنیم: “اسپایدر مجاز است فقط آدرس هایی را دنبال کند که شامل عبارت newspaper.com/economy/ باشد”. در این صورت، اسپایدر فقط لینک هایی را دنبال می کند که شامل مقالاتی در زمینه اقتصاد (economy) باشد.

پس از اینکه پارامترها و تنظیمات اولیه اسپایدر را تعیین کردید، به شل (shell) ترمینال بازگردید. و دستور اجرای اسپایدر را تایپ کنید. با اجرای ربات، خزش از صفحه اول آغاز شده و بلافاصله تمامی لینک های این صفحه دریافت می شود.

به عنوان مثال اگر قصد ما خزش در یک وبسایت روزنامه ای باشد. در هر صفحه که مربوط به مقالات روزنامه است، بخش های مختلف و همچنین لینک های خارجی (نظیر آگهی ها و تبلیغات) وجود دارد. درون هر لینکی که اسپایدر آن را دنبال می کند، تگ هایی وجود دارند که باید اطلاعات آنها استخراج شوند. و این تگ ها قبلا توسط شما مشخص شده اند. این فرایند را می توان نظیر یک Beautiful Soup پرورش یافته دانست. چرا که مشابه عملکرد Beautiful Soup را همراه با قابلیت دنبال کردن لینک های داخلی صفحات پیاده سازی می کند.

همچنین می توانید در خط فرمان، دستوری بنویسید که مشخص کند داده ها به چه صورت و در کجا صادر (export) و ذخیره شوند.

 

 

 

هم رویش منتشر کرده است:

آموزش پیشرفته وب اسکریپینگ با پایتون __ ترفندهای خزش در وبسایت‌ها

 

 

آیا آشنایی با این ابزارها برای وب اسکریپینگ کافی است؟

ما در این مقاله، یک دید ساده و کلی از ابزارهای مهم و مشهور موجود در حوزه وب اسکریپینگ، به همراه قابلیت های اصلی آن ها به شما ارائه دادیم. پیش از استفاده از هر کدام از ابزار های بیان شده، حتما مستندات مربوط به آن ها را مطالعه کنید. یا فیلم های آموزشی مرتبط با هر یک را ببینید. تنها در این صورت است که متوجه خواهید شد چگونه تگ های مورد نظرتان را در یک کد HTML پیدا و انتخاب کنید. این بزرگترین چالش شما خواهد بود. فارغ از اینکه می خواهید از کدام ابزار استفاده کنید.

بنابراین، اگر تجربه زیادی در کار با زبان برنامه نویسی پایتون ندارید. پیشنهاد ما این است که با وبسایت هایی ساده نظیر و یکی پدیا و با ابزار ساده ای نظیر Beautiful Soup شروع کنید.

وقتی که حسابی در استفاده از این ابزار خبره شدید. و اصطلاحا دستتان راه افتاد. به سراغ پروژه های پیشرفته تر بروید و کتابخانه هایی نظیر سلنیوم را امتحان کنید.

شاید یک روز صبح از خواب بیدار شوید و تصمیم بگیرید بر روی مقالات یک وبسایت مشخص، خزش کنید. و پس از بیرون کشیدن اطلاعات مورد نظرتان، بر روی آن ها تحلیل و ارزیابی هایی نظیر پردازش گفتار طبیعی (NLP) انجام دهید. این احتمالا بدین معناست که وقتش رسیده به سراغ استفاده از Scrapy بروید.

 

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

به یادگیری ادامه دهید!

 

کلید واژگان

بهترین ابزارهای وب اسکریپینگ – بهترین ابزارهای وب اسکرپینگ – وب اسکریپینگ – وب اسکرپینگ – مقایسه ابزارهای وب اسکریپینگ – وب اسکریپینگ چیست – وب اسکرپینگ چیست – web scraping چیست – scrapy چیست – اسکریپی چیست – زبان اسکریپتی چیست – اسکریپت چیست – کتابخانه Beautiful Soup – آموزش Beautiful Soup – نصب کتابخانه Beautiful Soup – آموزش کتابخانه Beautiful Soup – وب اسکریپینگ با جاوا اسکریپت – کتابخانه Selenium – وب اسکریپینگ با سلنیوم

 

منبع :

web-scraping-tools-comparison-all-you-need-to-get-started

 

دوره های آموزشی مرتبط

نویسنده :

سئو و ویراستاری :

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Search

مطالب مرتبط

دسته بندی مطالب

دوره-رایگان-یادگیری-ماشین-کتاب-یادگیری-ماشین-ژرون-Aurelien-Geron-هم-رویش
یادگیری ماشین رایگان ــ تندخوانی کتاب جرون