Rumah >pembangunan bahagian belakang >Tutorial Python >Cara Menyelesaikan TypeError: senarai indeks mestilah integer, bukan str, Apabila Mengekstrak Nilai Atribut dengan BeautifulSoup?

Cara Menyelesaikan TypeError: senarai indeks mestilah integer, bukan str, Apabila Mengekstrak Nilai Atribut dengan BeautifulSoup?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 17:27:14480semak imbas

How to Resolve TypeError: list indices must be integers, not str, When Extracting Attribute Values with 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!

Kenyataan:
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