Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Menyelesaikan TypeError: senarai indeks mestilah integer, bukan str, Apabila Mengekstrak Nilai Atribut dengan BeautifulSoup?
Mengekstrak Nilai Atribut dengan BeautifulSoup: Menyelesaikan TypeError dalam Python
Dalam usaha untuk mengekstrak kandungan atribut "nilai" tunggal daripada teg "input" tertentu pada halaman web, anda memutuskan untuk menggunakan BeautifulSoup. Dengan kod berikut, anda memulakan misi anda:
import urllib f = urllib.urlopen("http://58.68.130.147") s = f.read() f.close() from BeautifulSoup import BeautifulStoneSoup soup = BeautifulStoneSoup(s) inputTag = soup.findAll(attrs={"name": "stainfo"}) output = inputTag['value'] print str(output)
Walau bagaimanapun, usaha anda telah digagalkan oleh TypeError yang membingungkan: indeks senarai mestilah integer, bukan str. Keputusasaan menyelinap semasa anda mencari ketenangan dalam dokumentasi BeautifulSoup, tetapi selok-beloknya membuatkan anda bingung. Benarkan kami memberi penerangan tentang enigma ini.
Kaedah find_all() mengembalikan senarai semua elemen padanan. Dalam kes anda, input_tag ialah senarai, mungkin mengandungi hanya satu elemen. Baris berikutnya, output = inputTag['value'], cuba mengakses nilai kamus yang dikaitkan dengan elemen pertama senarai. Memandangkan indeks senarai mestilah integer, operasi ini gagal dengan ralat yang dilaporkan.
Untuk membetulkan isu, anda mempunyai dua pilihan:
Pilihan 1: Memilih Elemen Pertama
Pilih elemen pertama secara eksplisit daripada senarai menggunakan pengindeksan:
input_tag = soup.find_all(attrs={"name": "stainfo"}) output = input_tag[0]['value']
Pilihan 2: Menggunakan Kaedah find()
Gunakan kaedah find(), yang hanya mengembalikan elemen padanan pertama:
input_tag = soup.find(attrs={"name": "stainfo"}) output = input_tag['value']
Dengan melaksanakan salah satu daripada pendekatan ini, anda boleh mengekstrak nilai atribut yang diingini dengan berkesan dan meneruskan perjalanan BeautifulSoup anda tanpa perlu lagi halangan.
Atas ialah kandungan terperinci Cara Menyelesaikan TypeError: senarai indeks mestilah integer, bukan str, Apabila Mengekstrak Nilai Atribut dengan BeautifulSoup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!