BeautifulSoup - CSS Selector



Masih menggunakan file html berikut

<html>
    <head>
        <title>
            The Dormouse's story
        </title>
    </head>
    <body>
        <b></b>
        <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">
            <b>
                The End
            </b>
        </p>
    </body>
</html>

Menggunakan css selector cukup nyaman dan powerful untuk mengakses tag pada html. Rasanya cukup menggunakan css selector kita bisa menyelesaikan tugas scraping dan mengambil data yang kita inginkan.

Untuk mendapatkan tag a href dalam body dapat digunakan soup.select("body a")

>>> from bs4 import BeautifulSoup
>>> html_doc = "diisi dengan html diatas")
>>> soup = BeautifulSoup(html_doc, 'lxml')
>>> soup.select("body a")
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a clas
s="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="siste
r" href="http://example.com/tillie" id="link3">Tillie</a>]

Untuk mengakses tag tepat didalam sebuah tag gunakan .select("selector1 > selector2")

>>> soup.select("p > a")
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a clas
s="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="siste
r" href="http://example.com/tillie" id="link3">Tillie</a>]

Untuk mengakses tag dengan id tertentu tepat didalam sebuah tag gunakan .select("selector1 > #id")

>>> soup.select("p > #link1")
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]

Untuk mengakses tag dengan class tertentu tepat didalam sebuah tag gunakan .select(".classname")

>>> soup.select(".sister")
[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, <a clas
s="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="siste
r" href="http://example.com/tillie" id="link3">Tillie</a>]

Untuk mengakses seluruh sibling sebuah tag gunakan .select("selector1 ~ selector2")
Untuk mengakses next sibling sebuah tag gunakan .select("selector1 + selector2")

>>> soup.select("#link1 ~ .sister")
[<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a clas
s="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
>>> soup.select("#link1 + .sister")
[<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
BeautifulSoup - CSS Selector BeautifulSoup - CSS Selector Reviewed by noname needed on May 25, 2018 Rating: 5

No comments:

Powered by Blogger.