我正在嘗試使用 BeautifulSoup 從非統一結構的 html 區塊中提取資訊。我正在尋找一種方法來組合搜尋/過濾器輸出中標籤之間的文字區塊。例如,來自 html:
Description Section1 - line1
- line2
- line3
Section2 Content2
我想建立一個輸出列表,忽略某些類型的標籤(上例中的ul
和li
),但捕獲頂級未標記文字。我發現的最接近的是.select(':not(ul,li)')
或.find_all(['strong'])
,但兩者都不是它們可以同時捕捉未標記的頂級文字和各種目標標記。理想的行為是這樣的:
.find_all(['strong','UNTAGGED'])
產生如下輸出:
[ Description, Section1, Section2, Content2 ]
要獲得輸出,您可以先選擇
,然後選擇它的
next_sibling
。範例
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
輸出