2016-09-19 14 views
1

何千もの類似したページの2つの段落の間にhtmlタグの挿入を自動化したいと思います。私はPythonと美しいスープを使用しています美しいスープ:2段落の間にHTML5タグを挿入

<p align="center"><span class="header">My Title</span></p> 
{insert new tag <article> here} 
<p align="center">bla-bla-bla</p> 

:スニペットは、この(新しいタグは、ヘッダクラスの段落の後に挿入する必要があります)のようなものです。私の難しさは、挿入する場所と2つの段落の間の挿入方法を見つけることです。これまでのところうまくいきませんでした。どんな助け?

soup = BeautifulSoup(page, 'html.parser') 
cells = soup.findAll('p', attrs={"class":"header"}) 
index=str(cells).index('</p><p>') # search location between two paragraphs 
output_line = cells[:index] + '<article> ' + cells[index:] 

答えて

1

ワウは、トロンボーンによってコアコードが示されています。私はより完全なデモを提供したいと思います。

from bs4 import BeautifulSoup 
page = """ 
<p align="center"><span class="header">My Title1</span></p> 
<p align="center">bla-bla-bla</p> 
<p align="center"><span class="header">My Title2</span></p> 
<p align="center">bla-bla-bla</p> 
<p align="center"><span class="header">My Title3</span></p> 
<p align="center">bla-bla-bla</p> 
""" 
soup = BeautifulSoup(page, "html.parser") 
for header in soup.find_all('span', class_='header'): 
    article = soup.new_tag('article') 
    article.string = 'article content' 
    header.insert_after(article) 

print soup.prettify() 

OUTPUT:

<p align="center"> 
<span class="header"> 
    My Title1 
</span> 
</p> 
<article> 
article content 
</article> 
<p align="center"> 
bla-bla-bla 
</p> 
<p align="center"> 
<span class="header"> 
    My Title2 
</span> 
</p> 
<article> 
article content 
</article> 
<p align="center"> 
bla-bla-bla 
</p> 
<p align="center"> 
<span class="header"> 
    My Title3 
</span> 
</p> 
<article> 
article content 
</article> 
<p align="center"> 
bla-bla-bla 
</p> 
1

これを試してみてください:BeautifulSoup documentation

soup = BeautifulSoup(page, 'html.parser') 
p = soup.find('span', {'class': 'header'}).parent 
p.insert_after(soup.new_tag('article')) 

簡単に見ては、物事のこれらの並べ替えのための便利なヘルパーメソッドの多くをもたらします。

+0

うわー。どうもありがとうございました! – Hajar

+0

問題ありません!この回答(または別のもの)が問題を解決した場合は、緑色のチェックマークをクリックして「受け入れ済み」とマークすることができます。 –

関連する問題