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

مقدمه

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

نصب سلنیوم:

با دستور زیر کتابخانه سلنیوم را نصب میکنیم:

pip install selenium
or
!pip install selenium

میتوانیم از محیط مجازی virtual enve استفاده کنیم.

ابزارهای اسکرپ بر پایه مرورگر زمان بیشتری نسبت به روشهای بر پایه پروتوکل میبرند.

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

سپس موارد زیر را ایمپورت میکنیم:

import selenium
import re
import requests
from bs4 import BeautifulSoup
from selenium import webdriver

سپس درایور کروم را از فولدری که در آن قرار دارد میخوانیم و متغیرdrive را به آن نسبت میدهیم. سپس با متود get آدرس مورد نظر خود را روی آن ران میکنیم.

driver = webdriver.Chrome('E:\shahram\ML\webscap\chromedriver')
url='https://www.google.com/'
driver.get(url) # it is under control Boy

حال متن سایت مورد نظر خود را در text1 ریخته و آن را پرینت میکنیم:

text1=driver.page_source
print(text1)

روش دیگری نیز برای گرفتن متن سایت ها وجود دارد و آن استفاده از request.get است. ابتدا url مورد نظر را در یک متغیر میریزیم و سپس با استفاده سوپ زیبا و html.parser متن آن را میخوانیم.

getsite_bmw=requests.get('https://divar.ir/s/tehran/car/bmw?q=bmw')
soup_bmw=BeautifulSoup(getsite_bmw.text,'html.parser')
print(soup_bmw)

دستور آخر تمام متن وب سایت را برای ما نشان میدهد.

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

model_bmw=soup_bmw.div.find_all('div' ,class_="kt-post-card__body")
KM_price_bmw=soup_bmw.div.find_all('div', class_="kt-post-card__description")

یک قدم دیگر به سمت هدف خود نزدیک میشویم:

for j in range(0,len(model_bmw)):
        
    print(model_bmw[j].get_text())    
    print('-------------------')

بنابراین مشاهده میشود که با متودهای get_text میشودمحتوای متنی سایتهای مختلف را بدست آورد.

در ادامه کارهای جذاب تری با وب اسکریپینگ انجام خواهیم داد.

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

نشانی ایمیل شما منتشر نخواهد شد.