πŸ’« Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ BeautifulSoup Π² Python? Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΈ использованиС красивого супа πŸ’«

BeautifulSoup Π² Python - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая позволяСт ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· HTML ΠΈ XML Ρ„Π°ΠΉΠ»ΠΎΠ². Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BeautifulSoup Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π²Π΅Π±-страниц, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.


    from bs4 import BeautifulSoup

    # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования BeautifulSoup для парсинга HTML-ΠΊΠΎΠ΄Π°
    html = '''
    <html>
        <body>
            <h1>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ страницы</h1>
            <p>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!</p>
        </body>
    </html>
    '''
    
    soup = BeautifulSoup(html, 'html.parser')
    title = soup.find('h1').text
    content = soup.find('p').text
    
    print(title)  # Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: ΠŸΡ€ΠΈΠΌΠ΅Ρ€ страницы
    print(content)  # Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!
    

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, BeautifulSoup являСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с HTML ΠΈ XML Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π²Π΅Π±-страниц.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ BeautifulSoup Π² Python?

BeautifulSoup - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для парсинга Π²Π΅Π±-страниц ΠΈ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· HTML ΠΈ XML Ρ„Π°ΠΉΠ»ΠΎΠ² Π² языкС программирования Python. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π²Π΅Π±-страниц ΠΈ позволяСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· HTML/XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Установка BeautifulSoup

Для установки BeautifulSoup Π² Python Π²Π°ΠΌ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ pip. Для установки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

pip install beautifulsoup4

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ BeautifulSoup

BeautifulSoup прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ HTML/XML:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BeautifulSoup: Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с BeautifulSoup, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ HTML/XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    from bs4 import BeautifulSoup
    
    html_doc = """
    
        
            ΠŸΡ€ΠΈΠΌΠ΅Ρ€ HTML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°
        
        
            

    Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы

    Π­Ρ‚ΠΎ Π°Π±Π·Π°Ρ† тСкста.

    """ soup = BeautifulSoup(html_doc, 'html.parser')
  • Поиск элСмСнтов: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ BeautifulSoup для поиска элСмСнтов Π² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅ HTML/XML. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ всС элСмСнты Ρ‚Π΅Π³Π° <p>, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ `find_all()`:
    paragraphs = soup.find_all('p')
    
    for p in paragraphs:
        print(p.text)
                
  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…: BeautifulSoup позволяСт Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ тСкст ΠΈΠ· элСмСнта <h1>, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ `.text`:
    heading = soup.find('h1')
    print(heading.text)
                
  • Навигация ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ: BeautifulSoup обСспСчиваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML/XML, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ `parent`, `next_sibling`, `previous_sibling` ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
    body = soup.find('body')
    print(body.parent.name)
                

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ парсинга Π²Π΅Π±-страницы с BeautifulSoup

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ парсинга Π²Π΅Π±-страницы с использованиСм BeautifulSoup. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ HTML страница:

<html>
    <head>
        <title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ страницы</title>
    </head>
    <body>
        <h1>Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ</h1>
        <p class="content">Π­Ρ‚ΠΎ Π°Π±Π·Π°Ρ† тСкста.</p>
        <ul id="list">
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 1</li>
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 2</li>
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 3</li>
        </ul>
    </body>
</html>

МоТно ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этой страницы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BeautifulSoup:

from bs4 import BeautifulSoup

html_doc = """
<html>
    <head>
        <title>ΠŸΡ€ΠΈΠΌΠ΅Ρ€ страницы</title>
    </head>
    <body>
        <h1>Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ</h1>
        <p class="content">Π­Ρ‚ΠΎ Π°Π±Π·Π°Ρ† тСкста.</p>
        <ul id="list">
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 1</li>
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 2</li>
            <li>Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ 3</li>
        </ul>
    </body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ тСкста ΠΈΠ· элСмСнта <h1>
heading = soup.find('h1')
print(heading.text)

# Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ тСкста ΠΈΠ· элСмСнта <p class="content">
paragraph = soup.find('p', class_='content')
print(paragraph.text)

# Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов списка <ul>
ul = soup.find('ul', id='list')
lis = ul.find_all('li')

for li in lis:
    print(li.text)

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ парсингу Π½Π° Python #1 | ΠŸΠ°Ρ€ΡΠΈΠ½Π³ сайтов | Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Beautifulsoup

Π‘ΠΊΡ€Π΅ΠΉΠΏΠΈΠ½Π³ сайтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Beautifulsoup ΠΈ Requests Π½Π° Python

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ простых сайтов Π½Π° Python: BeautifulSoup, requests

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”’ Как ввСсти ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл Π² массив ΠΏΠΈΡ‚ΠΎΠ½? 🐍 ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ руководство

⚑️Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ Π² Python: простой ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ кода⚑️

Как Π΄Π΅Π»ΠΈΡ‚ΡŒ списки Π² Python: ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции

πŸ’« Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ BeautifulSoup Π² Python? Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΈ использованиС красивого супа πŸ’«

πŸ” Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Python: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ Ρ‚Ρ€ΡŽΠΊΠΈ

πŸ“ Как привСсти всС изобраТСния ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python

πŸ” Как пСрСвСсти Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр ΠΏΠΈΡ‚ΠΎΠ½? Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ совСты!