آموزش پیمایش توسط تگ ها در Beautiful Soup

4 سال پیش
آموزش پیمایش توسط تگ ها در Beautiful Soup
امتیاز دهید post

آموزش پیمایش توسط تگ ها در Beautiful Soup

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش پیمایش توسط تگ ها در Beautiful Soup خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون

در زیر سند html ما قرار دارد –

 

بر اساس سند بالا، سعی خواهیم کرد از بخشی از سند به قسمت دیگر برویم.

پایین رفتن

یکی از عناصر مهم در هر قسمت از سندهای HTML، تگ ها هستند که ممکن است حاوی تگ ها / رشته های دیگری باشند. Beautiful Soup روش های مختلفی را برای پیمایش و تکرار تگ فرزند فراهم می کند.

پیمایش با استفاده از نام تگ ها

ساده ترین راه برای جستجوی درخت تجزیه، جستجوی تگ با نام آن است. اگر تگ <head> را می خواهید، از soup.head استفاده کنید –

 

برای دریافت تگ خاص (مانند اولین تگ <b>) در تگ <body>.

 

با استفاده از یک نام تگ به عنوان ویژگی تنها اولین تگ با این نام به شما داده می شود –

 

برای به دست آوردن تمام ویژگی های تگ، می توانید از متد ()find_all استفاده کنید –

 

 

.contents and .children

ما می توانیم فرزندان تگ را در لیست توسط محتوای آن جستجو کنیم –

 

شی BeautifulSoup خود دارای فرزند است. در این حالت، تگ <html> فرزند شی Beautiful BeautifulSoup است –

این رشته محتویات ندارد، زیرا نمی تواند حاوی چیزی باشد –

به جای استفاده از لیست به عنوان لیست، از فرزندان مولد برای دسترسی به فرزند تگ استفاده کنید –

 

.descendants

ویژگی .descendants به شما اجازه می دهد تا تمام فرزندان یک تگ را به صورت بازگشتی تکرار کنید –

فرزندان مستقیم آن و فرزندان مستقیم آن و غیره –

تگ <head> فقط یک فرزند دارد، اما دارای دو descendants است: تگ <title> و تگ <title>. بدنه Beautifulsoup فقط یک فرزند مستقیم دارد (برچسب <html>) ، اما تعداد زیادی از descendants  دارد –

 

رشته

اگر تگ فقط یک فرزند داشته باشد و آن فرزند یک NavigableString باشد، فرزند به عنوان string. در دسترس قرار می گیرد –

اگر تنها فرزند یک تگ یک تگ دیگر است، و آن تگ دارای یک رشته است. سپس برچسب والد دارای همان string. فرزند مشابه آن است –

با این حال، اگر یک تگ بیش از یک چیز دارد، پس مشخص نیست که .string باید به چه چیزهایی مراجعه کند، بنابراین .string برای None تعریف می شود –

strings and stripped_strings.

اگر بیش از یک چیز در داخل تگ وجود دارد، هنوز هم می توانید فقط رشته ها را مشاهده کنید. از ژنراتور string. استفاده کنید –

 

برای حذف فضای خالی اضافی، از ژنراتور .stripped_strings استفاده کنید –

 

بالا رفتن
در یک قیاس “شجره نامه” ، هر تگ و هر رشته یک والد دارد

parent.

برای دسترسی به عنصر اصلی والد، از ویژگی parent. استفاده کنید.

 

در html_doc ما، رشته عنوان خودش والد دارد: تگ <title> که حاوی آن است

 

والد یک تگ سطح بالا مانند <html> خود شی Beautiful Beautifulsoup است –

 

والد یک شی Beautifulsoup به عنوان None تعریف شده است –

 

 

parents.

برای تکرار تمام عناصر والدین، از ویژگی parents. استفاده کنید

 

به کناره ها رفتن

در زیر یک سند ساده آورده شده است –

 

در سند بالا، تگ <b> و <c> در یک سطح است و هر دو از یک تگ هستند. تگ <b> و <c> خواهر و برادر هستند.

next_sibling and .previous_sibling.

برای حرکت بین عناصر صفحه که در همان سطح درخت تجزیه هستند از next_sibling و .prebil_sibling. استفاده کنید:

تگ <b> دارای یک خواهر بعدی است. خواهر و برادر قبلی وجود ندارد، زیرا هیچ چیز قبل از تگ <b> در همان سطح درخت وجود ندارد، همان مورد با تگ <c> وجود دارد.

 

این دو رشته خواهر و برادر نیستند، زیرا والدین یکسانی ندارند.

 

next_siblings and .previous_siblings.

برای تکرار  تگ siblings از تگ خواهر و next_siblings and .previous_siblings. استفاده کنید.

 

عقب و جلو رفتن

حالا اجازه دهید به دو خط اول در مثال قبلی “html_doc” خود برگردیم –

 

تجزیه کننده HTML رشته های بالاتر از کاراکترها را در اختیار شما قرار می دهد و آن را به مجموعه ای از حوادث مانند “نگ باز <html>” ، “بتگ باز<head>” ، ” تگ باز <title>” ، “اضافه کردن یک رشته” ، “بستن تگ </ title>” ، “بستن تگ </ head>” ، “باز کردن تگ <h4>” و موارد دیگر. BeautifulSoup روش های مختلفی را برای بازسازی تجزیه اولیه سند ارائه می دهد.

next_element and .previous_element.

ویژگی .next_element یک تگ یا رشته به هر آنچه بلافاصله تجزیه می شود اشاره می کند. بعضی اوقات به نظر می رسد شبیه خواهر / برادر بعدی است ، اما کاملاً یکسان نیست. در زیر تگ <a> در سند نمونه “html_doc” ما آورده شده است.

با این حال، عنصر. بعدی آن تگ <a> ، چیزی که بلافاصله پس از تگ <a> تجزیه شد، و بقیه جمله نیست: این کلمه “C” است:

 

رفتار بالاتر به این دلیل است که در نشانه گذاری اصلی، حرف “C” قبل از آن نقطه ویرگول ظاهر شده است. تجزیه کننده با یک تگ <a> ، سپس حرف “C” ، سپس تگ بسته شدن </a> ، سپس نقطه ویرگول و بقیه جمله مواجه شد. نقطه ویرگول در همان سطح نگ <a> است، اما ابتدا حرف “C” پیدا شد.

صفت .previous_element دقیقاً برعکس .next_element است. این به هر عنصری که بلافاصله قبل از این عنصر تجزیه شده است اشاره می کند.

 

next_elements and .previous_elements.

ما از این تکرارها برای حرکت به جلو و عقب به سمت یک عنصر استفاده می کنیم.

 

منبع.

لیست جلسات قبل آموزش Beautiful Soup در پایتون

  1. آموزش Beautiful Soup در پایتون
  2.  بررسی اجمالی Beautiful Soup در پایتون
  3. آموزش نصب Beautiful Soup
  4. آموزش Souping کردن صفحه در Beautiful Soup
  5. انواع اشیا beautiful soup 
امتیاز دهید post
0
برچسب ها :
نویسنده مطلب saber

دیدگاه شما

بدون دیدگاه