Saya mencoba mengekstrak konten dari atribut "nilai" tunggal dalam tag "masukan" tertentu pada halaman web. Saya menggunakan kode 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)
Saya mendapatkan TypeError: indeks daftar harus berupa bilangan bulat, bukan str
Meskipun dari dokumentasi Beautifulsoup saya mengerti bahwa string seharusnya tidak menjadi masalah di sini ... tetapi saya bukan spesialis dan saya mungkin salah paham.
Setiap saran sangat dihargai! Terima kasih sebelumnya.
python
parsing
attributes
beautifulsoup
Barnabe
sumber
sumber
output = inputTag[0].contents
inputTag[0].get('value')
alih-alihinputTag[0]['value']
untuk mencegah tidak ada penunjuk jika tag tidak memiliki atribut nilaiDi
Python 3.x
, cukup gunakanget(attr_name)
pada objek tag yang Anda gunakanfind_all
:terhadap file XML
conf//test1.xml
yang terlihat seperti:cetakan:
sumber
Jika Anda ingin mengambil beberapa nilai atribut dari sumber di atas, Anda dapat menggunakan
findAll
dan pemahaman daftar untuk mendapatkan semua yang Anda butuhkan:sumber
Saya sebenarnya menyarankan Anda untuk menghemat waktu dengan asumsi ini bahwa Anda tahu jenis tag yang memiliki atribut tersebut.
misalkan tag xyz memiliki attritube bernama "staininfo" ..
Dan saya tidak ingin Anda memahami bahwa full_tag adalah daftar
Dengan demikian Anda bisa mendapatkan semua nilai attrb dari staininfo untuk semua tag xyz
sumber
Anda juga bisa menggunakan ini:
sumber
Saya menggunakan ini dengan Beautifulsoup 4.8.1 untuk mendapatkan nilai semua atribut kelas dari elemen tertentu:
Penting untuk diperhatikan bahwa kunci atribut mengambil daftar bahkan ketika atribut hanya memiliki satu nilai.
sumber