亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BeautifulSoup 獲取元素之間的文本

BeautifulSoup 獲取元素之間的文本

蠱毒傳說 2022-06-14 16:33:37
我有這樣的事情:<b>foo:</b> bar<br /><b>baz:</b><font color="green">YES</font> spam<br /><b>eggs:</b> ham<br />現在我想在<br>s 之間獲取所有這些字符串。我可以做這樣的事情:from bs4 import BeautifulSoup# get the html heresoup = BeautifulSoup(content, 'html.parser')for element in soup.find_all('b'):    print(element.next_sibling)它有效,但僅適用于未封裝的文本,即<font>標簽中。所以我會得到bar,ham但我不會得到YES,而且出乎意料的是,我什至不會得到spam。有沒有辦法在不使用正則表達式的情況下解析它?
查看完整描述

2 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

您可以使用 find_all() 并檢查所有標簽,然后根據該標簽查找標簽。用于next_element獲取值。


from bs4 import BeautifulSoup

html='''<b>foo:</b> bar


<br />



<b>baz:</b>

<font color="green">YES</font> spam


<br />



<b>eggs:</b> ham


<br />'''

soup=BeautifulSoup(html,'lxml')

for item in soup.find_all():

    if item.name=='font':

       print(item.text.strip())

       print(item.next_element.next_element.strip())

    if item.name=='b':

       if item.next_element.next_element.strip()!='':

           print(item.next_element.next_element.strip())

輸出:


bar

YES

spam

ham


查看完整回答
反對 回復 2022-06-14
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

我試了一下。希望它有效



# get the html here

soup = BeautifulSoup(content, 'html.parser')

all_b=soup.find_all('b')

for b in all_b:

    print(b.get_text())

    next_b=b.findNext('b')

    #print(next_b)

    for sibling in b.next_siblings:

        if(sibling!=next_b):

            if(sibling!=None and isinstance(sibling,str)==False):

                print(sibling.get_text())

                sibling=sibling.next_sibling

            elif(sibling!=None and isinstance(sibling,str)==True):

                print(sibling)

                sibling=sibling.next_sibling

        elif(sibling==next_b):

            break

    print("new")

http://img1.sycdn.imooc.com//62a84807000110f011640634.jpg

查看完整回答
反對 回復 2022-06-14
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號