-
شنبه, ۲۵ ارديبهشت ۱۴۰۰، ۰۸:۴۳ ق.ظ
-
۹۶۰
![](http://bayanbox.ir/view/136388615051772869/web-scraping.png)
سلام دوستان :)
توی این پست قراره با هم راجع به وب اسکرپینگ در پایتون صحبت کنیم.
همونطور که میدونید فضای وب یک فضای بسیار گسترده و عظیم هست که هر نوع داده و اطلاعاتی میشه توش پیدا کرد.
وب اسکرپینگ یعنی ساختن ربات هایی برای استخراج داده های فضای اینترنت.
برای انجام دادن این کار توی پایتون ماژول ها و کتابخونه های زیادی نوشته شده مثل requests , beautiful soup , selenium و...
ما توی این پست قراره با استفاده از ماژول selenium بریم و در سایت github لاگین کنیم.
برای این کار اول از همه باید یکسری اطلاعات راجع به فرم ورود گیت هاب جمع آوری کنیم.
بنابراین وارد صفحه لاگین github بشین:
خب قبل از اینکه بریم سراغ بقیه کار یک چیزی رو بهتون بگم.
توی زبان نشانه گذاری html ما برای هر تگ یک سری attribute مشخص می کنیم. یکی از این attribute ها name هست که در واقع یکی از شناسه های اون تگ هستش.
خب برای پر کردن این فرم بصورت خودکار ما نیاز داریم تا name یا شناسه اون تکست باکس رو بدونیم.
بنابراین باید یجوری به کد های html اون سایت دسترسی داشته باشیم تا بتونیم اتریبیوت های تگ مد نظرمون رو ببینیم.
برای اینکار از چیزی بنام inspector که توی تمام مرورگر ها موجوده استفاده میکنیم.
برای دسترسی به inspector توی مرورگر کروم باید روی تگ مد نظر راست کلیک کنید و گزینه inspect رو بزنید توی بقیه مرورگر ها هم یک چیزی شبیه به همینه.
پس روی تکست باکس username or email address راست کلیک کنید و گزینه inspect رو بزنین.
بعدش باید یک صفحه این شکلی براتون باز بشه:
خب حالا توی اون خطی که انتخاب شده بگردین و اتریبیوت name رو پیدا کنید:
خب حالا روی فیلد Password راست کلیک کنید و گزینه inspect رو بزنین
بعد هم دنبال اتریبیوت name بگردید و اون رو پیدا کنید:
بعد از اون هم باید name دکمه رو پیدا کنید پس دوباره روی دکمه راست کلیک کنید و گزینه inspect رو بزنید
بعد هم دنبال اتریبیوت name بگردید و اون رو پیدا کنید:
خب حالا که اطلاعات مورد نظر رو از فرم بدست آوردیم میریم سراغ برنامه.
اول از همه باید درایور مرورگر مد نظر خودتون رو دانلود کنید. برای دانلود این درایور ها میتونین توی گوگل سرچ کنید و درایور مرورگر مد نظر خودتون رو پیدا و دانلود کنید.
(درایور ها ابزار هایی هستند که کتابخونه selenium از اون برای باز کردن صفحات مختلف استفاده می کنه)
بعد از نصب درایور باید ماژول selenium رو نصب کنید.
برای نصب selenium در ویندوز برین توی cmd و کد زیر رو بزنین:
pip install selenium
برای نصب selenium در لینوکس برین توی ترمینال و کد زیر رو بزنین:
sudo pip3 install selenium
خب حالا تمام پیش نیاز ها رو داریم پس بریم سراغ برنامه.
سورس کد:
from logging import error from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait username = "username" password = "password" driver = webdriver.Chrome(r"chromedriver") driver.get("https://github.com/login") driver.find_element_by_name("login").send_keys(username) driver.find_element_by_name("password").send_keys(password) driver.find_element_by_name("commit").click() WebDriverWait(driver=driver, timeout=10).until( lambda x: x.execute_script("return document.readyState === 'complete'") ) error_message = "Incorrect username or password." errors = driver.find_elements_by_class_name("flash-error") if any(error_message in e.text for e in errors): print("[!] Login failed") else: print("[+] Login successful") driver.close()
خب اول ماژول های مورد نیاز رو ایمپورت کردیم. بعد متغییر های username و password رو تعریف کردیم. توی متغییر یوزرنیم شما باید یوزرنیم اکانت github خودتون رو وارد کنید و در متغییر password هم باید پسورد خودتون رو.
توی خط بعد شی درایور خودمون رو ساختیم. بعد توی خط بعدی گفتیم که وارد آدرس gtihub.com/login بشه. بعدش توی دو خط بعد گفتیم که توی فیلد های یوزر و پسورد رو با استفاده از اتریبیوت name پیدا کنه و داخل اونها مقادیری که دادیم رو بنویسه. توی خط بعد هم بهش گفتیم که روی دکمه کلیک کنه.
دو خط بعدی هم خیلی مهم نیستن. توی خط بعد پیام اروری که به کاربر نشون میده رو تعریف کردیم.
خب وقتی که یوزرنیم و پسورد رو اشتباه توی گیت هاب وارد میکنیم یک پاپ آپ با کلاس flash-error ظاهر میشه بنابراین گفتیم که اگر همچین چیزی روی صفحه ظاهر شد چاپ کنه که لاگین با خطا مواجه شد و اگر نه چاپ میکنه لاگین موفقیت آمیز بود.
خب دوستان این برنامه هم تموم شد.
امیدوارم براتون مفید بوده باشه D: