چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ - نسخهی قابل چاپ +- باشگاه کاربران روماک (https://forum.romaak.ir) +-- انجمن: انجمن طراحی سایت و برنامه نویسی (https://forum.romaak.ir/forumdisplay.php?fid=78) +--- انجمن: طراحی سایت، سئو و بهینه سازی (https://forum.romaak.ir/forumdisplay.php?fid=27) +--- موضوع: چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ (/showthread.php?tid=4469) |
چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ - saberi - ۹۶/۱۱/۱۳ با استفاده از وب کراولر میتوان بدون نیاز به انجام برخی اعمال به صورت دستی، آنها را به صورت خودکار انجام داد. ساخت یک کراوبر وب به کاربر کمک میکند اعمال روتین خود در وب را بدون نیاز به تکرار و به طور اتوماتیک انجام بدهد.
وب کراولینگ عمل فوقالعاده سودمندی است، چرا که با آن میتوان کارهایی که به صورت روتین و همیشگی در وب انجام میشوند را به صورت خودکار به اجرا در آورد. میتوان با ساخت کراولر، با یک وب سایت به فعل و انفعال پرداخت، همان گونه که یک انسان قادر است با آن ارتباط برقرار کند. روشهای مختلفی برای ایجاد کراولر وجود دارد. به عنوان نمونه میتوان از پایتون به این منظور استفاده کرد، اما مشکل اینجاست که خزنده ساخته شده به این روش از جاوااسکریپت پشتیبانی نمیکند. بنابر این در وب سایتهایی که برای مدیریت ارتباط با کاربران بیشتر از زبان جاوااسکریپت استفاده شده است نمیتوان از آن بهره برد. در چنین شرایطی میتوان کراولری نوشت که از گوگل کروم استفاده میکند. خزنده ما به همین دلیل خواهد توانست کدهای جاوااسکریپت را همانند مرورگر گوگل کرومی که توسط کاربران مورد استفاده قرار میگیرد مدیریت کند. خودکار سازی فرآیندها در گوگل کروم نیازمند استفاده از ابزاری به نام سلنیوم (Selenium) است. این یک بخش نرم افزاری است و با قرار گرفتن بین برنامه و مرورگر به کاربر اجازه میدهد از طریق برنامه خود، مرورگر را مدیریت کند. در این مقاله روش کامل خودکارسازی گوگل کروم را شرح خواهیم داد. این مطلب شامل قدمهای زیر است:
تنظیم سلنیوم Selenium سلنیوم از یک بخش نرم افزاری که فرآیندهای جداگانهای را اجرا کرده و از طرف برنامه جاوا، اعمالی را انجام میدهد تشکیل شده است. این بخشی که از آن صحبت میکنیم با عنوان وب درایور (Web Driver) شناخته میشود. وب درایور را باید بر روی سیستم کامپیوتری خود دانلود کرد. وب درایور با مراجعه به وب سایت Google از طریق لینک زیر میتوانید به صفحه دانلود سلنیوم وارد شوید. دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
در ادامه باید بر روی جدیدترین ریلیز آن کلیک کرده و فایل مناسب با سیستم عامل خود (ویندوز، لینوکس و یا مک) را انتخاب کنید. بسته دانلودی، یک فایل دارای پسوند ZIP بوده و درون آن فایلی قابل اجرا با نام Chromedriver.exe وجود دارد. بعد از دریافت فایل فشرده شده، محتویات درون آن را در مسیری مناسب همچون C:\WebDrivers\chromedriver.exe استخراج کنید. بهتر است شما نیز در همین مسیر فایل را استخراج کنید، چرا که در ادامه، درون برنامه جاوا از این آدرس استفاده خواهیم کرد. ماژولهای جاوا قدم بعدی، تنظیم ماژولهای جاوایی است که برای استفاده از سلنیوم مورد نیاز هستند. تصور میکنیم شما در حال استفاده از Maven برای ساخت برنامه جاوا هستید، پس باید وابستگی زیر را به POM.xml خود اضافه کنید: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
وقتی فرآیند ساخت را اجرا کنید، تمامی ماژولهای مورد نیاز دانلود شده و مقدمات لازم برای استفاده از سلنیوم در ساخت وب کراولر فراهم میشوند.
روش کار
در اینجا کار با سلنیوم را به منظور ایجاد وب کراولر آغاز میکنیم. نخستین قدم ایجاد یک نمونه ChromeDriver است:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با اجرای آن باید یک پنجره گوگل کروم باز شود. اکنون میخواهیم به صفحه جستجوی گوگل وارد شویم: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
یک مرجع به عنصر نوشتاری ورودی پیدا کنید تا بلکه بتوان عملیات جستجو را انجام داد. عنصر ورودی نوشتاری دارای نام q است. در اینجا با استفاده از متد ()WebDriver.findElement عناصر HTML درون صفحه را پیدا میکنیم: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
میتوان نوشته را به هر عنصری با استفاده از متد ()sendKeys ارسال کرد. در ایجا یک عبارت جستجویی ارسال کرده و آن را با یک خط جدید به اتمام میرسانیم. به همین دلیل جستجو خیلی سریع آغاز میشود: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اکنون که فرآیند جستجو در حال اجرا است، باید برای صفحات نتیجه منتظر بمانیم. میتوان آن را با کد زیر انجام داد: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
این کد به عنوان بخشی از فرآیند ایجاد وب کراولر در واقع به سلنیوم اعلام میکند باید برای ده ثانیه منتظر مانده و وقتی عنوان صفحه با یک Terminator آغاز شد، مقدار را برگرداند. با استفاده از یک تابع لامبادا، شرایطی که باید برای آن منتظر ماند را تعریف میکنیم. اکنون میتوانید عنوان صفحه وب را دریافت کنید: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
وقتی این جلسه کاری به پایان رسید، پنجره مرورگر با کد زیر میتواند بسته شود: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با استفاده از این کدها اکنون یک جلسه مرورگر کنترل شده با استفاده از جاوا از طریق سلنیوم در اختیار داریم. نحوه ایجاد آن تقریبا ساده به نظر میرسد، اما حتی با همین جلسه نیز میتوان اعمال زیادی را به صورت خودکار انجام داد. استفاده از اینسپکتور گوگل کروم
اینسپکتور گوگل کروم ابزاری فوقالعاده ارزشمند بوده و برای تشخیص عناصر استفاده شده در سلنیوم بسیار کاربردی است. این ابزار به شما اجازه میدهد عنصر مورد نظر از جاوا را به طور دقیق به منظور استخراج اطلاعات مشخص کنید. قابلیت مشخص کردن یک اقدام تعاملی همچون کلیک کردن بر روی یک دکمه، از دیگر امکانات آن است. در ادامه به صورت خلاصه نحوه استفاده از اینسپکتور گوگل کروم را شرح میدهیم.
گوگل کروم را باز کرده و یک صفحه وب باز کنید. به عنوان نمونه ما در این مطلب، به صفحه فیلم Justice League (2017) در وب سایت IMDb رفتهایم. اکنون میخواهیم عناصری مورد نظر برای نشانه گرفتن را پیدا کنیم. مثلا در اینجا بخش خلاصه فیلم مد نظر است. بر روی بخش خلاصه (Summary) کلیک راست کرده و گزینه Inspect را انتخاب کنید. در تب Elements میتوان نوشته مربوط به بخش خلاصه را مشاهده کرد که درون یک تگ div به همراه کلاس summary_text قرار دارد. استفاده از CSS یا XPath برای انتخاب در سلنیوم از انتخاب عناصر صفحه با استفاده از CSS پشتیبانی میشود. به عنوان نمونه برای انتخاب متن مربوط به بخش خلاصه از صفحه بالا میتوان نوشت: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
کاربران حتی قادر هستند از XPath به منظور انتخاب عناصر به شیوهای تقریبا یکسان استفاده کنند. مجددا برای انتخاب متن خلاصه باید نوشت: *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
XPath و CSS هر دو قابلیتهای مشابهی دارند، پس انتخاب یکی از آنها تنها به سلیقه کاربر برمیگردد. خواندن گوگل میل از جاوا در این بخش از ایجاد وب کراولر مورد نظر خود، کار کمی پیچیدهتر میشود. در واقع تمامی مراحل پیشین، مقدماتی بودند که اکنون با استفاده از آنها قصد داریم عمل دریافت اطلاعات از گوگل میل را انجام بدهیم. کار را با Chrome Driver آغاز کرده و به آدرس Gmail.com بروید. تا بارگذاری کامل صفحه منتظر بمانید. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در قدم بعد، به دنبال خانه ایمیل بگردید (این فیلد به وسیله آیدی identifierId پر شده است) و آدرس ایمیل را وارد کنید. سپس بر روی دکمه Next کلیک کرده و تا زمان بارگذاری صفحه رمز عبور، منتظر بمانید. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اکنون پسورد را وارد کرده و دکمه Next را مجددا انتخاب کنید. سپس باید تا بارگذاری صفحه جی میل منتظر ماند. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
برای هر ورودی، فیلد From را دریافت کنید. برخی از ورودیهای From ممکن است دارای چندین عنصر باشد و این موضوع به تعداد کاربران درگیر درون آن مکالمه بستگی دارد. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اکنون موضوع را دریافت میکنیم. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مرحله بعدی از فرآیند ایجاد و استفاده از وب کراولر ، زمان و تاریخ را دریافت میکنیم. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در اینجا تعداد سطرهای ایمیلهای درون صفحه مشخص میشود. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در نهایت نوبت به بستن مرورگر میرسد. *محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
به منظور تکرار میتوان از سلنیوم با گوگل کروم، برای خزیدن در میان وب سایتهایی که دارای انبوهی از کدهای جاوااسکریپت هستند استفاده کرد. با استفاده از گوگل کروم اینسپکتور میتوان اطلاعات زیادی درباره CSS و XPath به دست آورد. این اطلاعات برای اجرای دستورات بعدی بسیار کاربردی خواهند بود. RE: چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ - elshan - ۹۶/۱۱/۱۳ واقعا عالی بود و مطمئنا به درد خیلیا میخوره البته برای برنامه نویسها و طراحان سایت RE: چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ - farnaz - ۹۶/۱۱/۱۳ بسیار عالی RE: چگونه با سلنیوم یک وب کراولر (خزنده وب) ایجاد کنیم؟ - mesterweb - ۹۶/۱۱/۱۳ متشکرم از آموزش خوبتون |