Jadual Kandungan
1. Pengenalan: Mengendalikan bersyarat hilang dalam parsing HTML
2. Alat teras: pemilih cantik dan css pemilih
3. Analisis Masalah: Mengapa tidak cukup untuk menyaring secara langsung?
4. Penyelesaian Umum: Pemahaman Senarai dan Penghakiman Bersyarat
5. Fleksibiliti dan Skala
6. Perkara yang perlu diperhatikan
7. Ringkasan
Rumah hujung hadapan web html tutorial Petua Lanjutan Cantik: Pengekstrakan Elemen HTML dan Pemegang Letak Mengisi dengan Penghakiman Bersyarat

Petua Lanjutan Cantik: Pengekstrakan Elemen HTML dan Pemegang Letak Mengisi dengan Penghakiman Bersyarat

Oct 06, 2025 pm 07:30 PM

Petua Lanjutan Cantik: Pengekstrakan Elemen HTML dan Pemegang Letak Mengisi dengan Penghakiman Bersyarat

Artikel ini memperincikan cara menggunakan perpustakaan BeautifeSoup Python untuk menangani masalah keadaan hilang yang dihadapi dalam parsing HTML. Dengan menggabungkan pemilih CSS dan penghakiman bersyarat dalam pemahaman senarai Python, kami dapat dengan cekap mengekstrak data sasaran dan secara automatik memasukkan ruang letak khusus (seperti rentetan kosong) apabila keadaan tertentu tidak dipenuhi, dengan itu memastikan integriti dan konsistensi struktur data output.

1. Pengenalan: Mengendalikan bersyarat hilang dalam parsing HTML

Apabila merangkak data laman web, kita sering menghadapi situasi di mana struktur HTML tidak sepenuhnya konsisten. Sebagai contoh, dalam bekas induk pendua, beberapa elemen kanak -kanak mungkin wujud, sementara yang lain mungkin hilang, atau kandungan mereka tidak memenuhi kriteria pengekstrakan kami. Dalam kes ini, jika kita mengekstrak elemen sasaran hanya melalui penapisan mudah, kita mungkin kehilangan entri yang sepadan dengan bekas induk, menghasilkan senarai data akhir yang tidak sepadan dengan struktur asal. Untuk menyelesaikan masalah ini, kita memerlukan mekanisme untuk memasukkan pemegang tempat apabila elemen sasaran tidak memenuhi syarat untuk mengekalkan integriti struktur data.

2. Alat teras: pemilih cantik dan css pemilih

BeautifulSoup adalah perpustakaan parsing HTML/XML yang kuat di Python. Ia boleh menukar dokumen HTML yang kompleks ke dalam objek Python, yang memudahkan kita mencari dan mengekstrak data melalui nama tag, atribut atau pemilih CSS. Di antara mereka, kaedah PILIH () membolehkan kami menggunakan pemilih CSS untuk melakukan carian elemen yang cekap dan fleksibel.

3. Analisis Masalah: Mengapa tidak cukup untuk menyaring secara langsung?

Memandangkan struktur HTML berikut, kami ingin mengekstrak atribut HREF dari semua tag dengan tapak nama kelas, tetapi pada masa yang sama, untuk kes -kes di mana ibu bapa

mengandungi tag tetapi nama kelasnya adalah palsu, kami mahu memasukkan rentetan kosong "sebagai tempat yang dilepaskan secara langsung.

Contoh struktur HTML:

 <div class="Section">
        <a class="site" href="www.example1.com"> site1 </a>                   
</div>
<div class="Section">
        <a class="bogus" href="www.idontneed1.com"> idontNeedThis1 </a>               
</div>
<div class="Section">
        <a class="site" href="www.example2.com"> site2 </a>                   
</div>
<div class="Section">
        <a class="site" href="www.example3.com"> site3 </a>                   
</div>
<div class="Section">
        <a class="bogus" href="www.idontneed2.com"> idontneedthis2 </a>                   
</div>

Jika kita hanya menggunakan soup.find_all ('a', kelas _ = 'tapak') atau sup.select ('a.site'), kita akan mendapat senarai yang hanya mengandungi www.example1.com, www.example2.com, dan www.example3.com, dan entri yang tidak dapat diabaikan.

Output yang kami harapkan ialah:

 [{"site": "www.example1.com"}, {"site": ""}, {"site": "www.example2.com"}, {"site": "www.example3.com"}, {"site": ""}]

4. Penyelesaian Umum: Pemahaman Senarai dan Penghakiman Bersyarat

Untuk mencapai matlamat di atas, kita boleh menggunakan kaedah yang lebih umum: pertama pilih semua elemen kanak -kanak yang berkaitan, dan kemudian tentukan apa yang hendak diekstrak melalui derivasi senarai yang digabungkan dengan penghakiman bersyarat.

Pelaksanaan Python:

 dari bs4 import cantikSoup

html_doc = "" "
<div class="Section">
        <a class="site" href="www.example1.com"> site1 </a>                   
</div>
<div class="Section">
        <a class="bogus" href="www.idontneed1.com"> idontNeedThis1 </a>               
</div>
<div class="Section">
        <a class="site" href="www.example2.com"> site2 </a>                   
</div>
<div class="Section">
        <a class="site" href="www.example3.com"> site3 </a>                   
</div>
<div class="Section">
        <a class="bogus" href="www.idontneed2.com"> idontneedthis2 </a>                   
</div>
"" "

sup = indahSoup (html_doc, 'html.parser')

# Gunakan pemilih CSS untuk memilih .section semua elemen kanak -kanak langsung <a>
# Kemudian membina senarai hasil melalui pemahaman senarai dan hasil penghakiman bersyarat = [
    {"site": "" Jika "palsu" dalam a.get ("kelas", []) else a ["href"]}
    untuk sup.select (". Bahagian> a")
]

cetak (hasil)</a>

Parsing Kod:

  1. sup.select (". Seksyen> a") :
  2. untuk sup.select (". Bahagian> a") :
  3. a.get ("kelas", []) :
  4. "Bogus" dalam a.get ("kelas", []) :
  5. "" Jika "palsu" dalam a.get ("kelas", []) lain ["href"] :
  6. {"site": ...} :
    • Akhirnya, setiap lelaran gelung mencipta kamus dengan "tapak" utama dan nilai adalah hasil yang dinilai berdasarkan syarat -syarat di atas. Semua kamus ini dikumpulkan ke dalam senarai untuk membentuk output akhir.

Hasil output:

 [{'site': 'www.example1.com'}, {'site': ''}, {'site': 'www.example2.com'}, {'site': 'www.example3.com'}, {'site': ''}]

5. Fleksibiliti dan Skala

Kaedah ini mempunyai fleksibiliti yang sangat tinggi dan dengan mudah boleh menyesuaikan diri dengan keperluan analisis yang berbeza:

  • Ubah suai penghakiman keadaan: Anda boleh mengubah keadaan seperti yang diperlukan. Sebagai contoh, periksa sama ada tag mengandungi teks tertentu, sama ada terdapat atribut lain, atau sama ada unsur induknya memenuhi syarat tertentu.

     # Contoh: Jika atribut HREF kosong, masukkan "N/A"
    # {"site": "n/a" if not a.get ("href") else a ["href"]}
    
    # Contoh: Ekstrak href Jika kandungan teks mengandungi "keperluan", jika tidak, ia kosong# {"site": a ["href"] jika "needthis" dalam a.get_text () else ""}
  • Ekstrak atribut atau teks yang berbeza: Sebagai tambahan kepada atribut HREF, anda juga boleh mengekstrak kandungan teks tag (a.get_text ()), atribut lain (["id"]), atau elemen anak mereka.

  • Mengendalikan struktur yang lebih kompleks: Jika tidak ada tag di dalam bahagian, dan anda masih ingin menghasilkan entri untuk setiap bahagian, anda perlu melintasi bahagian terlebih dahulu, kemudian cari tag di dalam setiap bahagian dan membuat pertimbangan bersyarat.

     # Contoh: Jika bahagian mungkin tidak mempunyai tag result_complex = []
    untuk seksyen_div dalam sup.select (". Seksyen"):
        a_tag = seksyen_div.find ('a') # Cari tag dalam bahagian semasa jika a_tag:
            # Jika tag dijumpai, buat penghakiman bersyarat hasil_complex.append ({"site": "" if "bogus" dalam a_tag.get ("kelas", []) else a_tag ["href"]})
        lain:
            # Sekiranya tidak ada tag, masukkan result_complex.append lalai lalai ({"site": ""}) 
    cetak (result_complex)

6. Perkara yang perlu diperhatikan

  • Ketepatan pemilih: Pastikan pemilih CSS anda cukup tepat untuk memilih semua elemen yang anda ingin memproses, tidak lebih atau kurang. Pemilih yang terlalu luas mungkin mengandungi unsur -unsur yang tidak relevan, dan pemilih yang terlalu sempit mungkin terlepas.
  • Keselamatan atribut: Apabila mengakses atribut elemen, seperti ["href"] atau ["kelas"], jika atribut mungkin tidak wujud, sebaiknya gunakan a.get ("attribute_name", default_value) untuk mengelakkan keyeRror. Sebagai contoh, a.get ("href") tidak akan kembali apabila href tidak wujud.
  • Jenis Data: Pastikan jenis data pemegang tempat bersesuaian dengan jenis data yang anda harapkan untuk mengekstrak, atau boleh dikenal pasti dengan betul dan ditukar dalam pemprosesan berikutnya.

7. Ringkasan

Dengan bijak menggabungkan pemilih CSS BeautifulSoup dan ekspresi bersyarat dalam pemantauan senarai python, kita boleh membina logik parsing HTML yang kuat dan fleksibel. Kaedah ini bukan sahaja dapat mengekstrak data sasaran dengan tepat, tetapi juga secara automatik memasukkan tempat pemegang letak apabila keadaan tertentu tidak dipenuhi, dengan itu mengekalkan integriti struktur data output dan surat -menyuratnya dengan struktur HTML yang asal, sangat meningkatkan keteguhan dan kecekapan pemprosesan data.

Atas ialah kandungan terperinci Petua Lanjutan Cantik: Pengekstrakan Elemen HTML dan Pemegang Letak Mengisi dengan Penghakiman Bersyarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Sep 16, 2025 pm 10:54 PM

Tutorial ini memperincikan cara menggunakan CSS untuk menyembunyikan kandungan teks tertentu dengan tepat di halaman HTML untuk mengelakkan masalah seluruh elemen induk yang tersembunyi kerana pemilih yang tidak betul. Dengan menambah kelas CSS eksklusif ke elemen pembalut teks sasaran dan menggunakan paparan: tiada; Atribut, pemaju boleh mencapai kawalan halus elemen halaman, memastikan bahawa hanya bahagian yang diperlukan tersembunyi, dengan itu mengoptimumkan susun atur halaman dan pengalaman pengguna.

Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateemailinks.startwithforbasiclinks, tambah? Subjek = dan & body = forpre-filledContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Sep 20, 2025 pm 10:09 PM

Artikel ini meneroka dua masalah biasa apabila memanggil fungsi JavaScript luaran dalam HTML: masa pemuatan skrip yang tidak betul menyebabkan unsur-unsur DOM menjadi tidak siap, dan penamaan fungsi mungkin bertentangan dengan peristiwa terbina dalam pelayar atau kata kunci. Artikel ini menyediakan penyelesaian terperinci, termasuk lokasi rujukan skrip tweaking dan mengikuti spesifikasi penamaan fungsi yang baik untuk memastikan kod JavaScript dilaksanakan dengan betul.

Bagaimana untuk menambah tooltip pada hover dalam html? Bagaimana untuk menambah tooltip pada hover dalam html? Sep 18, 2025 am 01:16 AM

USetetetitLeatTrBITrBITpetoLToolCUStOM-STyLElyLEtoMSORCUStOM.1.addtitle = "Text" toanyeLementFordefaLtTipips.2.forStyLEdToolTips, wrapTheelememementinAcontainer, uss.toolTipand.tool

Bagaimana membuat teks membungkus imej dalam html? Bagaimana membuat teks membungkus imej dalam html? Sep 21, 2025 am 04:02 AM

USECSSSFLOOPROPERTYTOWRAPTEXTAROUNIMAGE: FloatLeftFortExtOntHeright, FloatRightFortExtOnTheLeft, AddMarginforspacing, andClearFloatStOpreventLayOuteSues.

Cara menetapkan atribut lang dalam html Cara menetapkan atribut lang dalam html Sep 21, 2025 am 02:34 AM

Setthelangattributeinthehtmltagtospecifypagelanguage, mis., Forenglish;

Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Sep 20, 2025 pm 11:00 PM

Artikel ini meneroka cabaran menangkap peristiwa mousedown pada div ibu bapa yang mengandungi iframes domain. Masalah teras ialah dasar keselamatan pelayar (dasar asal usul) menghalang acara langsung DOM mendengar kandungan iframe silang domain. Jenis penangkapan acara ini tidak dapat dicapai melainkan nama domain sumber iframe dikawal dan CORS dikonfigurasi. Artikel ini akan menerangkan mekanisme keselamatan secara terperinci dan batasan mereka mengenai interaksi peristiwa dan memberikan alternatif yang mungkin.

Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Sep 21, 2025 pm 10:42 PM

Apabila menggunakan bootstrap untuk susun atur laman web, pemaju sering menghadapi masalah elemen yang dipaparkan bersebelahan dan bukannya disusun secara vertikal secara lalai, terutamanya apabila bekas induk menggunakan susun atur Flexbox. Artikel ini akan meneroka cabaran susun atur yang sama dengan mendalam dan memberikan penyelesaian: dengan menyesuaikan atribut flex-arah dari bekas flex ke lajur, menggunakan kelas alat Flex-Column Bootstrap untuk mencapai susunan menegak yang betul dari tag H1 dan blok kandungan seperti bentuk, memastikan struktur halaman memenuhi jangkaan.

See all articles