2017-04-27 117 views
0

文件看起來是這樣的:如何使用BeautifulSoup按標籤分割文檔?

<div class="eh">...</div> 
... 
<section class="g">...</section> <!-- div 1 --> 
... 
<section class="g">...</section> <!-- div 1 --> 
... 
<div class="eh">...</div> 
... 
<section class="g">...</section> <!-- div 2 --> 
... 

所有這些標籤在同一棵樹上的水平。我需要將文檔分割爲多個div的組,並將各個部分附加到其相應的div。

預期結果是一個列表,如[div1, section1, section2, div2, section3]。它們按照它們在HTML中出現的順序顯示。

我當前的代碼:

bs.find_all(
    ['div', 'section'], 
    {'class': ['eh', 'g']}) 

這個工作,如果股利和部分有不同的類別。

+0

到目前爲止您嘗試過的是什麼? – Prabhakar

回答

0

我認爲這會讓你走向最終目標。

from bs4 import BeautifulSoup 

soup = BeautifulSoup(open('temp.htm').read(), 'lxml') 
tags = soup.find_all(['div','section']) 

for tag in tags: 
    print (tag.name, tag) 

輸出:

div <div class="eh">...</div> 
section <section class="g">...</section> 
section <section class="g">...</section> 
div <div class="eh">...</div> 
section <section class="g">...</section> 
section <section class="g">...</section> 
section <section class="g">...</section> 
section <section class="g">...</section> 

注意,在湯項是在其中標記在soup.find_all列出的順序輸出。

+0

謝謝。它部分解決了我的問題。這個解決方案可以通過更具體的方式,即找到多個標籤,每個標籤具有相應的類別? –

+0

請詳細解釋。 –

+0

我可以找到多個標籤,每個標籤都與其類相關聯?例如:find_all(['div',{'class':'eh'},'section',{'class':'g'}])。我試過:find_all( ['div','section'],{'class':['eh','g''}})。它的工作原理,我可以進一步改進嗎? –