وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

وب اسکرپینگ در پایتون

  • ۹۴۹

سلام دوستان :)

 

توی این پست قراره با هم راجع به وب اسکرپینگ در پایتون صحبت کنیم.

همونطور که میدونید فضای وب یک فضای بسیار گسترده و عظیم هست که هر نوع داده و اطلاعاتی میشه توش پیدا کرد.

وب اسکرپینگ یعنی ساختن ربات هایی برای استخراج داده های فضای اینترنت.

 

برای انجام دادن این کار توی پایتون ماژول ها و کتابخونه های زیادی نوشته شده مثل 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:


  • Mohammad Mahyar Pourabdollah Khadar
    سلام من کد رو وارد می کنم فقط سایت گیت هاب و قسمت لاگین واسم باز میشه و یوزر و پسورد رو نمی خونه که وارد پیج من بشه با اینکه طبق توضیجات شما یوزر نیم و پسورد خودم رو در کد قرار دادم
    میشه راهنمایی کنید
    ممنون
    پاسخ:
    سلام دوست عزیز
    کد کاملا تست شده و کار میکنه.
    میتونین کد کامل و هر ارور احتمالی رو برای ایمیل farbodmblog@gmail.com ارسال کنین تا من بررسی کنم.
    ضمنا از این که driver شما به درستی کار میکنه هم مطمئن بشین.
    موفق باشید.
  • سلام خیلی عالی بود لطفاً از این سری آموزش ها بیشتر بزارین خدا قوت
    پاسخ:
    سلام دوست عزیز 
    حتما
    موفق باشید‌
  • سلام
    آموزش هاتون فوق‌العاده هستن
    کاملا مشخصه که برای آموزش برنامه ها خیلی وقت میذارید و زحمت میکشید
    سپاس از شما
    پاسخ:
    خیلی ممنون دوست عزیز
    موفق باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی