Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengakses Nilai Atribut dengan Betul daripada Senarai yang Dikembalikan oleh `findAll()` atau `find_all()` BeautifulSoup?

Bagaimana untuk Mengakses Nilai Atribut dengan Betul daripada Senarai yang Dikembalikan oleh `findAll()` atau `find_all()` BeautifulSoup?

DDD
Lepaskan: 2024-12-08 02:40:12
asal
375 orang telah melayarinya

How to Correctly Access Attribute Values from a List Returned by BeautifulSoup's `findAll()` or `find_all()`?

Mengakses Nilai Atribut dengan BeautifulSoup

Apabila cuba mengekstrak atribut nilai daripada teg input tertentu menggunakan BeautifulSoup dan kod berikut:

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)
Salin selepas log masuk

ralat berlaku: TypeError: senarai indeks mestilah integer, bukan str.

Dokumentasi BeautySoup mencadangkan bahawa rentetan tidak sepatutnya menimbulkan masalah dalam senario sedemikian. Walau bagaimanapun, ralat nampaknya menunjukkan sebaliknya.

Penyelesaian

Isunya terletak pada penggunaan .findAll(), yang mengembalikan senarai semua elemen yang ditemui. Untuk mengakses atribut nilai teg tertentu, seseorang harus menggunakan pendekatan berikut:

  1. Gunakan .find_all() dan bukannya .findAll():

    .find_all() mengembalikan senarai semua elemen yang ditemui, manakala .find_all() hanya mengembalikan satu (pertama) ditemui elemen.

  2. Akses atribut nilai elemen pertama dalam senarai:

    Memandangkan BeautifulSoup mengembalikan senarai elemen yang ditemui, adalah perlu untuk menentukan indeks elemen yang anda ingin akses. Dalam kes ini, atribut nilai elemen pertama dalam senarai boleh diakses oleh:

    output = inputTag[0]['value']
    Salin selepas log masuk
  3. Sebagai alternatif, gunakan .find() untuk mendapatkan elemen pertama:

    Daripada menggunakan .find_all(), .find() boleh digunakan untuk mendapatkan terus yang pertama dijumpai elemen:

    inputTag = soup.find(attrs={"name": "stainfo"})
    output = inputTag['value']
    Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Nilai Atribut dengan Betul daripada Senarai yang Dikembalikan oleh `findAll()` atau `find_all()` BeautifulSoup?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan