BeautifulSoup: Gabungkan teks peringkat atas dengan fungsi carian teg klasik?
P粉471207302
P粉471207302 2023-09-15 09:16:45
0
1
401

Saya cuba menggunakan BeautifulSoup untuk mengekstrak maklumat daripada blok html berstruktur tidak seragam. Saya sedang mencari cara untuk menggabungkan blok teks antara tag dalam output carian/penapis. Contohnya, daripada html:

 Description Section1 
  • line1
  • line2
  • line3
Section2 Content2

Saya ingin membuat senarai output yang mengabaikan jenis teg tertentu (ulli),但捕获顶级未标记文本。我发现的最接近的是.select(':not(ul,li)').find_all(['strong'])dalam contoh di atas, tetapi kedua-duanya tidak boleh menangkap kedua-dua teks peringkat atas yang tidak berteg dan pelbagai teg sasaran. Gelagat yang ideal adalah seperti ini:

.find_all(['strong','UNTAGGED'])

menghasilkan output berikut:

[ Description, Section1, Section2, Content2 ]

P粉471207302
P粉471207302

membalas semua (1)
P粉905144514

Untuk mendapatkan output, anda boleh pilih,然后选择它的next_siblingdahulu.

Contoh
from bs4 import BeautifulSoup html = '''  Description Section1 
  • line1
  • line2
  • line3
Section2 Content2
''' soup = BeautifulSoup(html) data = [] for e in soup.select('strong'): data.extend([e,e.next_sibling.strip()]) data
Output
[Description, 'Section1', Section2, 'Content2']
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!