Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah anda boleh mengekstrak data daripada jadual HTML menggunakan BeautifulSoup dalam Python, khususnya mengendalikan kerumitan seperti baris tambahan dan elemen input?

Bagaimanakah anda boleh mengekstrak data daripada jadual HTML menggunakan BeautifulSoup dalam Python, khususnya mengendalikan kerumitan seperti baris tambahan dan elemen input?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 23:08:31423semak imbas

How can you extract data from an HTML table using BeautifulSoup in Python, specifically handling complexities such as extra rows and input elements?

Mengekstrak Data daripada Jadual Menggunakan BeautifulSoup dalam Python

Apabila menghuraikan dokumen HTML, keupayaan untuk mengekstrak data daripada jadual adalah keperluan biasa. BeautifulSoup, perpustakaan Python yang popular untuk mengikis web, menyediakan cara yang berkuasa untuk menghuraikan HTML dan mengakses kandungannya.

Menghuraikan Jadual dengan BeautifulSoup

Untuk menggambarkan proses menghuraikan jadual dengan BeautifulSoup, mari kita pertimbangkan contoh "Penghurai Tiket Parking NYC." Respons HTML untuk halaman ini agak rumit dan matlamatnya adalah untuk mengekstrak data daripada jadual item baris yang mengandungi maklumat pada setiap tiket.

Untuk mencapainya, kami perlu mengenal pasti jadual dalam HTML terlebih dahulu. respons menggunakan kelasnya yang unik:

<code class="python">table = soup.find("table", { "class" : "lineItemsTable" })</code>

Setelah jadual ditemui, kita boleh mengulangi baris untuk mengekstrak data:

<code class="python">for row in table.findAll("tr"):
    cells = row.findAll("td")
    print cells</code>

Walau bagaimanapun, pendekatan ini hanya akan menyediakan HTML elemen untuk setiap baris dalam jadual. Untuk mendapatkan kandungan teks sebenar, kita perlu mengekstrak teks daripada setiap sel:

<code class="python">data = []
for row in table.findAll("tr"):
    cols = row.findAll("td")
    cols = [ele.text.strip() for ele in cols]
    data.append([ele for ele in cols if ele])</code>

Kod ini berulang melalui baris jadual, mengekstrak teks daripada sel dan membuang mana-mana ruang putih di hadapan atau di belakang. Hasilnya ialah senarai senarai, di mana setiap senarai dalam mewakili satu baris dalam jadual.

Mengendalikan Kerumitan

Dalam contoh yang disediakan, baris terakhir jadual mengandungi jumlah pembayaran, yang bukan sebahagian daripada data jadual. Untuk mengendalikan perkara ini, kami boleh menapis baris dengan kurang daripada bilangan elemen tertentu:

<code class="python">data = [row for row in data if len(row) >= 7]</code>

Selain itu, lajur terakhir setiap baris mengandungi kotak teks input. Kita boleh mengendalikannya dengan mengekstrak teks sebelum elemen input:

<code class="python">data = [[col.split()[0] if col.find("input") else col for col in row] for row in data]</code>

Kesimpulan

Dengan pengubahsuaian ini, anda boleh mengekstrak data dengan berkesan daripada jadual item baris menggunakan BeautifulSoup dalam Python. Ingat untuk menyesuaikan kod dengan keperluan khusus anda dan mengendalikan sebarang kerumitan tambahan yang mungkin timbul.

Atas ialah kandungan terperinci Bagaimanakah anda boleh mengekstrak data daripada jadual HTML menggunakan BeautifulSoup dalam Python, khususnya mengendalikan kerumitan seperti baris tambahan dan elemen input?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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