Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa BeautifulSoup Kadangkala Tiada Kembali dan Bagaimana Saya Mengelakkan AttributeErrors?

Mengapa BeautifulSoup Kadangkala Tiada Kembali dan Bagaimana Saya Mengelakkan AttributeErrors?

Mary-Kate Olsen
Lepaskan: 2024-11-20 19:30:18
asal
359 orang telah melayarinya

Why Does BeautifulSoup Sometimes Return None and How Do I Avoid AttributeErrors?

Mengapa Fungsi BeautifulSoup Boleh Mengembalikan Tiada dan Cara Mengelak AttributeError: Objek 'NoneType' tidak mempunyai atribut...

Apabila menggunakan BeautifulSoup untuk menghuraikan HTML, anda mungkin menghadapi Tiada keputusan atau pengecualian AttributeError yang berkaitan dengan objek NoneType. Ini berlaku apabila elemen atau atribut tertentu tidak ditemui dalam data yang dihuraikan.

Memahami Pertanyaan BeautifulSoup

BeautifulSoup menyediakan kedua-dua pertanyaan hasil tunggal dan berbilang hasil. Kaedah seperti .find_all yang menyokong berbilang hasil mengembalikan senarai kosong jika tiada unsur sepadan ditemui.

Walau bagaimanapun, kaedah seperti .find dan .select_one, yang menjangkakan hasil tunggal, mengembalikan Tiada jika tiada padanan ditemui. Ini tidak seperti bahasa pengaturcaraan lain di mana pengecualian mungkin dilemparkan sebaliknya.

Mengendalikan Tiada Keputusan

Untuk mengelakkan ralat AttributeError apabila bekerja dengan Tiada hasil daripada kaedah hasil tunggal:

  • Semak kewujudan: Sebelum mengakses atribut hasil, sahkan bahawa ia bukan Tiada menggunakan jika keputusan bukan Tiada:.
  • Gunakan try/except: Kendalikan kemungkinan pengecualian AttributeError dengan anggun menggunakan blok try/except.
  • Gunakan nilai lalai: Jika elemen atau atribut dijangka hadir, berikan nilai lalai sekiranya tiada dijumpai.

Contoh

Pertimbangkan contoh kod daripada soalan:

print(soup.sister)  # Returns None because no <sister> tag exists

print(soup.find('a', class_='brother'))  # Returns None because no <a> tag with class="brother" exists

print(soup.select_one('a.brother'))  # Returns None, same reason as above

soup.select_one('a.brother').text  # Throws AttributeError because 'None' has no 'text' attribute
Salin selepas log masuk

Untuk mengendalikan senario ini dengan betul, gunakan teknik berikut:

if soup.sister is not None:
    print(soup.sister.name)  # Safely accesses the tag name

try:
    print(soup.find('a', class_='brother').text)
except AttributeError:
    print("No 'brother' class found")  # Catches the potential error

brother_text = soup.select_one('a.brother') or "Brother not found"  # Assigns a default value if not found
Salin selepas log masuk

Dengan mengikuti garis panduan ini, anda boleh menghalang pengecualian AttributeError dan mengendalikan Tiada keputusan dengan berkesan apabila menggunakan BeautifulSoup untuk menghuraikan HTML.

Atas ialah kandungan terperinci Mengapa BeautifulSoup Kadangkala Tiada Kembali dan Bagaimana Saya Mengelakkan AttributeErrors?. 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