sup cantik

Menemukan Node Anak Dengan Sup Yang Indah Beautiful

Menemukan Node Anak Dengan Sup Yang Indah Beautiful
Tugas scraping web adalah tugas yang membutuhkan pemahaman tentang bagaimana halaman web disusun. Untuk mendapatkan informasi yang dibutuhkan dari halaman web, seseorang perlu memahami struktur halaman web, menganalisis tag yang menyimpan informasi yang dibutuhkan dan kemudian atribut dari tag tersebut.

Untuk pemula di web scraping dengan BeautifulSoup, artikel yang membahas konsep web scraping dengan library yang kuat ini dapat ditemukan di sini.

Artikel ini untuk programmer, analis data, ilmuwan atau insinyur yang sudah memiliki keahlian mengekstrak konten dari halaman web menggunakan BeautifulSoup. Jika Anda tidak memiliki pengetahuan tentang perpustakaan ini, saya menyarankan Anda untuk membaca tutorial BeautifulSoup untuk pemula.

Sekarang kita dapat melanjutkan - saya ingin percaya bahwa Anda telah menginstal perpustakaan ini.  Jika tidak, Anda dapat melakukannya dengan menggunakan perintah di bawah ini:

instal pip BeautifulSoup4

Karena kita bekerja dengan mengekstrak data dari HTML, kita perlu memiliki halaman HTML dasar untuk mempraktikkan konsep-konsep ini di.  Untuk artikel ini, kami akan menggunakan cuplikan HTML ini untuk latihan. Saya akan menetapkan cuplikan HTML berikut ke variabel menggunakan tanda kutip tiga di Python.

sampel_konten = """

LinuxPetunjuk



Untuk membuat daftar yang tidak berurutan, tag ul digunakan:
 




Untuk membuat daftar yang diurutkan, tag ol digunakan:
 


    Berikut daftar pesanannya
  1. Nomor satu

  2. Nomor dua



Petunjuk Linux, 2018



"""

Sekarang setelah kita memilahnya, mari langsung bekerja dengan perpustakaan BeautifulSoup.

Kami akan menggunakan beberapa metode dan atribut yang akan kami panggil pada objek BeautifulSoup kami. Namun, kita perlu mengurai string kita menggunakan BeautifulSoup dan kemudian menetapkan variabel "our_soup".

dari bs4 impor BeautifulSoup sebagai bso
our_soup = bso(konten_sampel, "lxml")

Untuk selanjutnya, kami akan bekerja dengan variabel "our_soup" dan memanggil semua atribut atau metode kami di atasnya.

Singkatnya, jika Anda belum tahu apa itu simpul anak, pada dasarnya simpul (tag) itu ada di dalam simpul lain. Dalam cuplikan HTML kami misalnya, tag li adalah simpul turunan dari tag “ul” dan “ol”.

Berikut adalah metode yang akan kita lihat:

temukanAnak():

Itu temukan anak metode yang digunakan untuk menemukan simpul anak pertama dari elemen HTML. Misalnya ketika kita melihat tag "ol" atau "ul" kita, kita akan menemukan dua tag anak di dalamnya. Namun ketika kita menggunakan temukan anak metode, itu hanya mengembalikan simpul pertama sebagai simpul anak.

Metode ini terbukti sangat berguna ketika kita hanya ingin mendapatkan simpul anak pertama dari elemen HTML, karena metode ini segera mengembalikan hasil yang diperlukan.

Objek yang dikembalikan bertipe bs4.elemen.Menandai. Kita dapat mengekstrak teks darinya dengan memanggil atribut teks di atasnya.

Berikut ini contohnya:

first_child = sup_kita.temukan("tubuh").temukan("ol")
cetak(anak_pertama.temukanAnak())

Kode di atas akan mengembalikan yang berikut:

  • Nomor satu
  • Untuk mendapatkan teks dari tag, kami memanggil teks atribut di atasnya.

    Suka:

    cetak(anak_pertama.temukanAnak().teks)

    Untuk mendapatkan hasil sebagai berikut:

    'Nomor satu'
    temukanAnak():

    Kami telah melihat temukan anak metode dan melihat cara kerjanya. Itu temukanAnak-anak metode ini bekerja dengan cara yang serupa, namun seperti namanya, metode ini tidak hanya menemukan satu simpul anak, ia mendapatkan semua simpul anak dalam sebuah tag.

    Saat Anda perlu mendapatkan semua simpul anak dalam sebuah tag, temukanAnak-anak metode adalah cara untuk pergi. Metode ini mengembalikan semua node anak dalam daftar, Anda dapat mengakses tag pilihan Anda menggunakan nomor indeksnya.

    Berikut ini contohnya:

    first_child = sup_kami.temukan("tubuh").temukan("ol")
    cetak(anak_pertama.temukanAnak-anak())

    Ini akan mengembalikan node anak-anak dalam daftar:

    [
  • Nomor satu
  • ,
  • Nomor dua
  • ]

    Untuk mendapatkan simpul anak kedua dalam daftar, kode berikut akan melakukan pekerjaan:

    cetak(anak_pertama.temukanAnak()[1])

    Untuk mendapatkan hasil sebagai berikut:

  • Nomor dua
  • Hanya itu yang disediakan BeautifulSoup dalam hal metode. Namun, itu tidak berakhir di situ. Atribut juga dapat dipanggil pada objek BeautifulSoup kami untuk mendapatkan simpul anak/anak/keturunan dari elemen HTML.

    isi:

    Selagi temukanAnak-anak metode melakukan pekerjaan langsung mengekstraksi node anak-anak, the isi atribut melakukan sesuatu yang sedikit berbeda.

    Itu isi atribut mengembalikan daftar semua konten dalam elemen HTML, termasuk node anak. Jadi ketika Anda memanggil isi atribut pada objek BeautifulSoup, itu akan mengembalikan teks sebagai string dan node dalam tag sebagai bs4.elemen.Menandai obyek.

    Berikut ini contohnya:

    first_child = sup_kita.temukan("tubuh").temukan("ol")
    cetak(anak_pertama.isi)

    Ini mengembalikan yang berikut:

    ["\n   Berikut adalah daftar pesanan\n   ",
  • Nomor satu
  • ,
    '\n',
  • Nomor dua
  • , '\n']

    Seperti yang Anda lihat, daftar berisi teks yang muncul sebelum simpul anak, simpul anak, dan teks yang muncul setelah simpul anak.

    Untuk mengakses node anak kedua, yang perlu kita lakukan adalah menggunakan nomor indeksnya seperti yang ditunjukkan di bawah ini:

    cetak(anak_pertama.isi[3])

    Ini akan mengembalikan yang berikut:

  • Nomor dua
  • anak-anak:

    Berikut adalah satu atribut yang melakukan hal yang hampir sama dengan atribut isi. Namun, ia memiliki satu perbedaan kecil yang dapat membuat dampak besar (bagi mereka yang menganggap serius pengoptimalan kode).

    Atribut anak-anak juga mengembalikan teks yang datang sebelum simpul anak, simpul anak itu sendiri dan teks yang muncul setelah simpul anak. Perbedaannya di sini adalah mengembalikannya sebagai generator alih-alih daftar.

    Mari kita lihat contoh berikut:

    first_child = sup_kami.temukan("tubuh").temukan("ol")
    cetak(anak_pertama.anak-anak)

    Kode di atas memberikan hasil berikut (alamat di mesin Anda tidak harus sama dengan yang di bawah):

    Seperti yang Anda lihat, itu hanya mengembalikan alamat generator. Kita bisa mengubah generator ini menjadi daftar.

    Hal ini dapat kita lihat pada contoh di bawah ini:

    first_child = sup_kita.temukan("tubuh").temukan("ol")
    print(daftar(first_child.anak-anak))

    Ini memberikan hasil berikut:

    ["\n        Berikut daftar pesanan\n        ",
  • Nomor satu
  • ,
    '\n',
  • Nomor dua
  • , '\n']

    keturunan:

    Selagi anak-anak atribut berfungsi untuk mendapatkan hanya konten di dalam tag i.e. teks, dan node pada tingkat pertama, the keturunan atribut masuk lebih dalam dan melakukan lebih banyak.

    Itu keturunan atribut mendapatkan semua teks dan simpul yang ada di simpul anak. Jadi itu tidak hanya mengembalikan simpul anak, ia juga mengembalikan simpul cucu.

    Selain mengembalikan teks dan tag, itu juga mengembalikan konten dalam tag sebagai string juga.

    Sama seperti anak-anak atribut, keturunan mengembalikan hasilnya sebagai generator.

    Kita bisa melihat ini di bawah ini:

    first_child = sup_kita.temukan("tubuh").temukan("ol")
    cetak(anak_pertama.keturunan)

    Ini memberikan hasil berikut:

    Seperti yang terlihat sebelumnya, kita kemudian dapat mengonversi objek generator ini menjadi daftar:

    first_child = sup_kami.temukan("tubuh").temukan("ol")
    print(daftar(first_child.keturunan))

    Kami akan mendapatkan daftar di bawah ini:

    ["\n   Berikut adalah daftar pesanan\n   ",
  • Nomor satu
  • ,
    'Nomor Satu', '\n',
  • Nomor dua
  • , 'Nomor Dua', '\n']

    Kesimpulan

    Itu dia, lima cara berbeda untuk mengakses node anak dalam elemen HTML. Mungkin ada lebih banyak cara, namun dengan metode dan atribut yang dibahas dalam artikel ini, seseorang harus dapat mengakses simpul anak dari elemen HTML apa pun.

    Tutorial OpenTTD
    OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
    SuperTuxKart untuk Linux
    SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...
    Pertempuran untuk Tutorial Westnoth
    The Battle for Wesnoth adalah salah satu game strategi open source terpopuler yang bisa kamu mainkan saat ini. Tidak hanya game ini telah dikembangkan...