Saya menggunakan BeautifulSoup dan mengurai beberapa HTML.
Saya mendapatkan data tertentu dari setiap HTML (menggunakan for loop) dan menambahkan data itu ke daftar tertentu.
Masalahnya adalah, beberapa HTML memiliki format yang berbeda (dan mereka tidak memiliki data yang saya inginkan di dalamnya) .
Jadi, saya mencoba menggunakan penanganan pengecualian dan menambahkan nilai null
ke daftar (saya harus melakukan ini karena urutan data itu penting.)
Misalnya, saya punya kode seperti:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
dan beberapa tautan tidak memilikinya <dd class='title'>
, jadi yang ingin saya lakukan adalah menambahkan string null
ke daftar.
Kesalahan muncul:
list index out of range.
Apa yang telah saya coba lakukan adalah menambahkan beberapa baris seperti ini:
if not dlist[1]:
newlist.append('null')
continue
Tapi itu tidak berhasil. Itu masih menunjukkan kesalahan:
list index out of range.
Apa yang harus saya lakukan tentang ini? Haruskah saya menggunakan penanganan pengecualian? atau apakah ada cara yang lebih mudah?
Ada saran? Bantuan apa pun akan sangat bagus!
sumber
None
jelas lebih bersih, OP menginginkan'null'
kasus ini.Anda memiliki dua pilihan; menangani pengecualian atau menguji panjangnya:
atau
Gunakan yang pertama jika sering tidak ada item kedua, yang kedua jika terkadang tidak ada item kedua.
sumber
Terner sudah cukup. perubahan:
untuk
ini adalah cara yang lebih singkat untuk mengungkapkannya
sumber
Mengambil referensi ThiefMaster ♦ terkadang kita mendapatkan kesalahan dengan nilai yang diberikan sebagai '\ n' atau null dan melakukan itu yang diperlukan untuk menangani ValueError:
Menangani pengecualian adalah cara yang harus dilakukan
sumber
sumber
Bagi siapa pun yang tertarik dengan cara yang lebih singkat:
Tetapi untuk kinerja terbaik, saya sarankan menggunakan
False
alih-alih'null'
, maka uji satu baris sudah cukup:sumber