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

Mary-Kate Olsen
Lepaskan: 2024-10-26 23:08:31
asal
322 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!