Apabila menggunakan BeautifulSoup untuk menghuraikan HTML, anda mungkin menghadapi keadaan di mana fungsi mengembalikan Tiada dan bukannya hasil yang dijangkakan . Ini berlaku apabila elemen atau atribut HTML yang disasarkan tiada dalam dokumen. BeautifulSoup tidak menimbulkan pengecualian secara langsung tetapi sebaliknya bergantung pada kod berikutnya untuk mengesan dan mengendalikan keputusan Tiada ini.
Menerima Tiada sebagai hasilnya boleh membawa kepada pengecualian AttributeError apabila cuba mengakses atribut atau melaksanakan operasi pada objek NoneType, kerana ia tidak mempunyai atribut dan kaedah yang diharapkan. Ini adalah perkara biasa dengan fungsi seperti .find, .select_one dan lain-lain yang mengembalikan hasil tunggal.
Untuk menggambarkan isu , pertimbangkan contoh berikut daripada soalan:
print(soup.sister) # Missing <sister> tag print(soup.find('a', class_='brother')) # No anchor tag with class "brother" print(soup.select_one('a.brother')) # No anchor tag with CSS class "brother"
Panggilan ini semua akan mengembalikan Tiada kerana elemen yang dinyatakan tidak terdapat dalam dokumen.
Untuk mengelakkan pengecualian AttributeError dan memastikan kod yang mantap, adalah penting untuk mengendalikan Tiada hasil dengan betul. Berikut ialah beberapa pengesyoran:
if soup.find('a', class_='brother'): print('Found an anchor tag with class "brother"') else: print('No anchor tag with class "brother" found')
Dengan mengikuti amalan ini, anda boleh menghalang ralat yang tidak dijangka, mengesan ketiadaan unsur atau atribut dan memberikan mesej ralat yang lebih berguna atau gelagat alternatif yang sewajarnya.
Atas ialah kandungan terperinci Mengapa BeautifulSoup Kadang-kadang Tiada Kembali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!