soup.find("tagName", { "id" : "articlebody" })
Mengapa ini TIDAK mengembalikan <div id="articlebody"> ... </div>
tag dan barang-barang di antaranya? Tidak mengembalikan apa pun. Dan aku tahu pasti itu ada karena aku menatap langsung darinya
soup.prettify()
soup.find("div", { "id" : "articlebody" })
juga tidak berfungsi.
( EDIT: Saya menemukan bahwa BeautifulSoup tidak benar mem-parsing halaman saya, yang mungkin berarti halaman yang saya coba parsing tidak diformat dengan benar dalam SGML atau apa pun)
python
beautifulsoup
Tony Stark
sumber
sumber
Jawaban:
Anda harus memposting contoh dokumen Anda, karena kode berfungsi dengan baik:
Menemukan karya s
<div>
di dalam<div>
juga:sumber
div = soup.find(id="articlebody")
soup.find('div', id='articlebody')
Untuk menemukan elemen dengan
id
:sumber
Beautiful Soup 4 mendukung sebagian besar penyeleksi CSS dengan
.select()
metode ini , oleh karena itu Anda dapat menggunakanid
pemilih seperti:Jika Anda perlu menentukan jenis elemen, Anda bisa menambahkan pemilih jenis sebelum
id
pemilih:The
.select()
Metode akan kembali kumpulan elemen, yang berarti bahwa itu akan mengembalikan hasil yang sama seperti berikut.find_all()
metode contoh:Jika Anda hanya ingin memilih satu elemen, maka Anda bisa menggunakan
.find()
metode ini :sumber
Saya pikir ada masalah ketika tag 'div' terlalu banyak bersarang. Saya mencoba menguraikan beberapa kontak dari file html facebook, dan Beautifulsoup tidak dapat menemukan tag "div" dengan kelas "fcontent".
Ini terjadi dengan kelas-kelas lain juga. Ketika saya mencari div secara umum, ternyata hanya yang tidak begitu banyak bersarang.
Kode sumber html dapat berupa halaman mana saja dari facebook dari daftar teman dari teman Anda (bukan salah satu dari teman Anda). Jika seseorang dapat mengujinya dan memberikan beberapa saran saya akan sangat menghargainya.
Ini adalah kode saya, di mana saya hanya mencoba untuk mencetak jumlah tag "div" dengan kelas "fcontent":
sumber
Kemungkinan besar karena parser beautifulsoup default memiliki masalah. Ubah parser yang berbeda, seperti 'lxml' dan coba lagi.
sumber
soup = BeautifulSoup(data, parser="html.parser")
Dalam sumber beautifulsoup, baris ini memungkinkan div untuk bersarang di dalam div; jadi kekhawatiran Anda dalam komentar lukas tidak akan valid.
Apa yang saya pikir perlu Anda lakukan adalah menentukan attrs yang Anda inginkan seperti
sumber
Anda mencoba
soup.findAll("div", {"id": "articlebody"})
?kedengarannya gila, tetapi jika Anda mengais barang-barang dari alam, Anda tidak dapat mengesampingkan beberapa div ...
sumber
Saya menggunakan:
Sebagai sintaks saya untuk find / findall; yang mengatakan, kecuali ada parameter opsional lain antara tag dan daftar atribut, ini seharusnya tidak berbeda.
sumber
Terjadi pada saya juga ketika mencoba untuk mengikis Google.
Saya akhirnya menggunakan pyquery.
Install:
Menggunakan:
sumber
Ini adalah fragmen kode
Seperti yang Anda lihat saya menemukan semua tag dan kemudian saya menemukan semua tag dengan class = "article" di dalamnya
sumber
The
Id
properti selalu unik diidentifikasi. Itu berarti Anda dapat menggunakannya secara langsung tanpa menentukan elemen. Oleh karena itu, ini merupakan poin plus jika elemen Anda memilikinya untuk mem-parsing melalui konten.sumber