22 grudnia 2014

[python] Beautiful Soup 4

Biblioteka do wyciągania danych z HTML-a i XML-a.
Różne ścieżki instalacji:
$ sudo apt-get install python-bs4
$ sudo apt-get install python3-bs4
$ pip install beautifulsoup4
BeautifulSoup zwraca obiekt reprezentujący dokument jako zagnieżdżone obiekty (kolejne pola) - każdy odpowiada prawdziwemu tag-owi. Najczęściej używane funkcji to find() i find_all(), pozwalające filtrować interesujące nas treści, ale istnieje też możliwość edytowanie struktury dokumentu.
soup = BeautifulSoup('<html>' \
                     '<a>' \
                        '<b>info1</b>' \
                        '<b>info2</b>' \
                     '</a>' \
                     '<c>text2</c>' \
                     '</html>')
print(soup.a.b.string)

tag = soup.find('a')
print(tag)
Wynik:
info1
<a><b>info1</b><b>info2</b></a>
Istnieje też możliwość tworzenia bardziej wyrafinowanych filtrów.
def filter_c_tag(tag):
    return tag.name == 'c' and tag.has_attr('item') and tag.attrs['item'] == 'bar'

soup = BeautifulSoup('<c item="bar">text1</c>' \
                     '<c item="foo">text2</c>' \
                     '<c item="bar">text3</c>')
tags = soup.find_all(filter_c_tag)
for t in tags:
    print(t.string)
Wynik
text1
text3

Brak komentarzy:

Prześlij komentarz