تراشیدن وب (Web Scraping) با پایتون گام اول و دوم پایتون

تراشیدن وب برای بهره برداری از اطلاعات موجود که در این مقاله با زبان پایتون (در رشته مقاله ای جداگانه با تکنولوژی NodeJS نیز به web scraping خواهیم پرداخت) به دو گام از پنج گام آن می پردازیم.

در دو مقاله مجزا مستندات هر دو کتابخانه Requests و Beautiful Soup  بررسی خواهیم کرد.

 

قدم اول کتابخانه Requests 


ابتدا اقدام به نصب آن کنید.

pip install requests

سپس در پروژه ایمپورت میکنیم.

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

1-get

با این دستور صفحه مورد نظر را فقط با دادن لینک آن دریافت می کنیم.

 res = requests.get(''https://webplant.ir/)

در جواب Status Code را دریافت میکنیم که درصورتی که برابر با 200 باشد به این معنی است که صفحه با موفقیت دریافت شده.

2-status_code

با دستور زیر میشه وضعیت درافت رو دوباره چک کرد

res.status_code

3-text

با این دستور میتونیم سورس و اطلاعات صفحه ای که دریفات کرده ایم را ببینیم ، البته این کار توصیه نمیشه چون صفحه ای که اطلاعات آن را دریفات کرده ایم حاوب تعدادی زیادی از خطوط HTML ، اطلاعات میان تگ های HTML ، ایمپورت های CSS , JavaScript و غیره میباشد که برای مشاهده آن ها بهتر است اول اطلاعات واکشی و در قالب دیتا بیس یا فایل اکسل ذخیره شده سپس مشاهده شود)

res.text

 

قدم دوم کتابخانه Beautiful Soup 


برای انتخاب و تجزیه دیتا از تگ های HTML از این لایبراری استفاده می کنیم

برای نصب کافیه دستور زیر رو اجرا کنید

pip install beautifulsoup4

خب برای استفاده از BeautifulSoup  طبق خط زیر اون رو از bs4 ایمپورت میکنیم.

from bs4 import BeautifulSoup 

بعد از ایمپورت کردن BeautifulSoup به شکل زیر محتوایی که با کتابخانه requests دریفات کرده ایم را به آن میدهیم 

soup = BeautifulSoup( req.text, 'html.parser' ) 

با نوشتن 'html.parser'  به BeautifulSoup میگیم که محتوای ما بصورت HTML است که میخاهیم آن را تجزیه کنی.

1-find

با این دستور میتونیم تگ مورد نظر رو انتخاب کنیم که اولین مورد یافت شده رو برامون برمی گرداند.

soup.find( 'a' )

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

soup.find( 'section' , attrs={ 'class' : 'bg-with' } )

 اولین تگ a موجود را بر می گرداند

یا میتونیم به شکل زیر و به ترتیب تگ ها رو انتخاب کنیم

soup.body.section.a

2-find_all()

این متد همه موارد یافت شده رو بر میگرداند.

soup.find_all( 'section' , attrs={ 'class' : 'bg-danger' } )

3-text

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

soup.find( 'section' , attrs={ 'class' : 'bg-warning' } ).text

<div class="bg-warning">

      Hi My Name is Hossein

<d/iv>

نتیجه میشه (  Hi My Name is Hossein  )

 

خب حالا که لیستی از موارد رو با find_all بدست اوردیم میتونیم به روش زیر روش حلقه بزنیم 

list =soup.find_all( 'section' , attrs={ 'class' : 'bg-warning' } )

for i in list:

    print( i.text ) 

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

ابتدا وارد شوید یا ثبت نام کنید!

برای ثبت نظر، نقد ابتدا باید وارد شوید یا ثبت نام کنید.

Activity Logs

There are 2 new tasks for you in “AirPlus Mobile APp” project:
Added at 4:23 PM by
img
Meeting with customer
Application Design
img
img
A
In Progress
View
Project Delivery Preparation
CRM System Development
img
B
Completed
View
Invitation for crafting engaging designs that speak human workshop
Sent at 4:23 PM by
img
Task #45890merged with #45890in “Ads Pro Admin Dashboard project:
Initiated at 4:23 PM by
img
3 new application design concepts added:
Created at 4:23 PM by
img
New case #67890is assigned to you in Multi-platform Database Design project
Added at 4:23 PM by
Alice Tan
You have received a new order:
Placed at 5:05 AM by
img

Database Backup Process Completed!

Login into Admin Dashboard to make sure the data integrity is OK
Proceed
New order #67890is placed for Workshow Planning & Budget Estimation
Placed at 4:23 PM by
Jimmy Bold
سبد خرید