Документация по Python

Парсинг HTML

В: Документация по Python

Найдите текст после элемента в BeautifulSoup

Представьте, что у вас есть следующий HTML:

 <div>
    <label>Name:</label>
    John Smith
</div>

 

И вам нужно найти текст «John Smith» после label элемента.

В этом случае, вы можете обнаружить label элемент текста , а затем использовать .next_sibling свойства :

 from bs4 import BeautifulSoup

data = """
<div>
    <label>Name:</label>
    John Smith
</div>
"""

soup = BeautifulSoup(data, "html.parser")

label = soup.find("label", text="Name:")
print(label.next_sibling.strip())

 

Печать John Smith .

Использование CSS-селекторов в BeautifulSoup

BeautifulSoup имеет ограниченную поддержку CSS селекторов , но охватывает наиболее часто используемые из них. С помощью select() метод , чтобы найти множество элементов и select_one() , чтобы найти один элемент.

Основной пример:

 from bs4 import BeautifulSoup

data = """
<ul>
    <li class="item">item1</li>
    <li class="item">item2</li>
    <li class="item">item3</li>
</ul>
"""

soup = BeautifulSoup(data, "html.parser")

for item in soup.select("li.item"):
    print(item.get_text())

 

Печать:

 item1
item2
item3


 

PyQuery

pyquery - это jquery-подобная библиотека для python. Он очень хорошо поддерживает селекторы CSS.

 from pyquery import PyQuery

html = """
<h1>Sales</h1>
<table id="table">
<tr>
    <td>Lorem</td>
    <td>46</td>
</tr>
<tr>
    <td>Ipsum</td>
    <td>12</td>
</tr>
<tr>
    <td>Dolor</td>
    <td>27</td>
</tr>
<tr>
    <td>Sit</td>
    <td>90</td>
</tr>
</table>
"""

doc = PyQuery(html)

title = doc('h1').text()

print title

table_data = []

rows = doc('#table > tr')
for row in rows:
    name = PyQuery(row).find('td').eq(0).text()
    value = PyQuery(row).find('td').eq(1).text()

    print "%s\t  %s" % (name, value)  
Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.