پارس کردن صفحات وب با کتابخانه beautifulsoup پایتون

معرفی کتابخانه beautifulsoup پایتون : به منظور تجزیه کردن یا پارس کردن صفحات وب با پایتون (فایل های HTML) میتوان از این کتاب خانه استفاده کرد. همچنین از این کتابخانه میتوان برای تجزیه کردن فایل های XML استفاده کرد.

مفاهیم کتابخانه beautifulsoup به منظور تجزیه کردن یا پارس کردن

کتابخانه beautifulsoup یک کتابخانه پایتون است که بمنظور استخراج داده از فایل‌های html و xml مورد استفاده قرار می گیرد. این کتایخانه صفحات مورد نظر خودرا بصورت یک درخت تجزیه می‌کند. درخت تجزیه این امکان را برای برنامه ایجاد می‌کند، که هرگونه دسترسی به عناصر صفحه html با سرعت بیشتری امکان‌پذیر گردد.  بااین روش شرایط مناسبی برای جستجوی اطلاعات مورد نظر فراهم می شود. در زیر نحوه تجزیه عناصر صفحه xml در قالب درخت نمایش داده شده است.

 

پارس کردن صفحات HTML با پایتون
پارس کردن صفحات وب با پایتون (تجزیه فایل های HTML)
پارس کردن صفحات وب با پایتون
پارس کردن صفحات وب با پایتون
  • نصب و راه اندازی

در این مقاله فرض کرده‌ایم که شما آشنایی کامل با کتابخانه اسکرپ پایتون دارید. در غیر اینصورت به مقاله کتابخانه پایتون برای وب اسکرپ (web scraping) مراجعه کنید.

به بکی از دو روش زیر کتابخانه  beautifulsoup را نصب می کنیم:

  • با استفاده از دستور pip

c:\>pip install beautifulsoup4

  • با استفاده از کد کتابخانه

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

http://www.crummy.com/software/BeautifulSoup/download/4.x/

C:\>python setup.py install

برنامه نمونه پارس کردن صفحات وب با پایتون

در ادامه مقاله براساس یک نمونه  برنامه با برخی از توانمندی‌های این کتابخانه آشنا می شویم:

  • نمونه یک فایل html را که در متغیر html_doc   قرار داده شده است درزیر مشاهده می کنید:
"""= html_doc

<html><head><title>The Dormouse's story</title></head>

<body>

<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were

<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,

<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and

<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;

and they lived at the bottom of a well.</p>

<p class="story">...</p>

"""

 

 

با استفاده از کتابخانه bs4  یک شیء از کلاس BeautifulSoup با هدف تجزیه متغیر html_doc تعریف می کنیم:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_doc, ‘html.parser’)

تابع prettify نمایش زیبایی از درخت html موجود در متغیر html_doc  را در خروجی نمایش می دهد:

print(soup.prettify())

# <html>

#  <head>

#   <title>

#    The Dormouse's story

#   </title>

#  </head>

#  <body>

#   <p class="title">

#    <b>

#     The Dormouse's story

#    </b>

#   </p>

#   <p class="story">

#    Once upon a time there were three little sisters; and their names were

#    <a class="sister" href="http://example.com/elsie" id="link1">

#     Elsie

#    </a>

#    ,

#    <a class="sister" href="http://example.com/lacie" id="link2">

#     Lacie

#    </a>

#    and

#    <a class="sister" href="http://example.com/tillie" id="link2">

#     Tillie

#    </a>

#    ; and they lived at the bottom of a well.

#   </p>

#   <p class="story">

#    ...

#   </p>

#  </body>

# </html>

 

 

جدول زیر شامل اطلاعاتی است که با استفاده از شیء ایجاد شده از کلاس  BeautifulSoup می‌توان از صفحه مورد نظر استخراج کرد:

خروجی برنامه شرح کد ویژگی شیء ردیف
 <title>The Dormouse’s story</title> تگ عنوان صفحه را بطور کامل نمایش می دهد: soap.title 1
 u’title’ نام تگ عنوان صفحه را نمایش می دهد: soup.title.name 2
 u’The Dormouse’s story’ محتوای تگ عنوان صفحه را  نمایش می دهد: soup.title.string 3
 u’head’ نام تگ پدر ، تگ عنوان صفحه را نمایش می دهد: soup.title.parent.name 4
 <p class=”title”><b>The Dormouse’s story</b></p> اولین تگ پاراگراف موجود در صفحه را نمایش می  دهد: soup.p 5
u’title’ نام کلاس استایل، اولین تگ پاراگراف موجود در صفحه را نمایش می  دهد: soup.p[‘class’] 6
 <a class=”sister” href=”http://example.com/elsie” id=”link1″>Elsie</a> اولین تگ لینک موجود در صفحه را نمایش می  دهد: soup.a 7
[<a class=”sister” href=”http://example.com/elsie” id=”link1″>Elsie</a>,

<a class=”sister” href=”http://example.com/lacie” id=”link2″>Lacie</a>

<a class=”sister” href=”http://example.com/tillie” id=”link3″>Tillie</a>]

تمام تگ های لینک موجود در صفحه را در قالب لیست پایتون نمایش می  دهد: soup.find_all(‘a’) 8
 <a class=”sister” href=”http://example.com/tillie” id=”link3″>Tillie</a> تگ با شناسه موردنظر را جستجو می کند: soup.find(id=”link3″) 9

 http://example.com/elsie

http://example.com/lacie http://example.com/tillie

 تمامی لینک های صفحه را استخراج می کند: for link in soup.find_all(‘a’):   print(link.get(‘href’)) 10

 The Dormouse’s story

 

The Dormouse’s story

 

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

 

 

قطعه کد زیر تمام متن صفحه را استخراج می کند: print(soup.get_text()) 11

 

برای دیدن فلیم های سینماییِ مهیج و جذاب”در حوزه فناوری اطلاعات، اوسینت و هوش مصنوعی“، بر روی اینجا کلیک کنید.

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

جهت ثبت نام در دوره های آموزشی بر روی اینجا کلیک کنید.

 

منبع:

http://web.stanford.edu/~zlotnick/TextAsData/Web_Scraping_with_Beautiful_Soup.html

Visits: 10051

همچنین ببینید

آپاچی تیکا

تجزیه گر یا پارسر متون و تشخیص زبان با آپاچی تیکا (Apache Tika)

آپاچی تیکا: آپاچی تیکا يکي از پروژه‌هاي متن باز Apache است که کلاسي براي شناسايي …

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