私はBeutifulsoup 4とPython 3.5+を使用してWebデータを抽出しています。Beautifulsoupで、指定した以外の要素のタグを抽出
<div class="the-one-i-want">
<p>
content
</p>
<p>
content
</p>
<p>
content
</p>
<p>
content
</p>
<ol>
<li>
list item
</li>
<li>
list item
</li>
</ol>
<div class='something-i-don't-want>
content
</div>
<script class="something-else-i-dont-want'>
script
</script>
<p>
content
</p>
</div>
私は<div class="the-one-i-want">
要素内に発見された抽出したいコンテンツのすべてを:私は解凍していたから、次のHTMLを、持っています。今、私はほとんどの時間を仕事、次の方法、使用しています:
soup = Beautifulsoup(html.text, 'lxml')
content = soup.find('div', class_='the-one-i-want').findAll('p')
をこれは、スクリプト、奇妙な挿入div
除外年代や、広告などそれ以外の非予測可能なコンテンツをまたは 『コンテンツ』タイプのものをお勧めします。
ここでは、<p>
タグ以外の要素があり、リストのようにメインコンテンツに対して文脈上重要なコンテンツを持つ場合があります。
のような方法で、<div class="the-one-i-want">
からコンテンツを取得する方法があります:
soup = Beautifulsoup(html.text, 'lxml')
content = soup.find('div', class_='the-one-i-want').findAll(desired-content-elements)
がdesired-content-elements
私はその特定のコンテンツのためのフィット感とみなさすべての要素を含むだろうか?例えば、<p>
タグ、すべて<ol>
タグ、<li>
タグなどがありますが、<div>
または<script>
タグはありません。私は単に別の反復プロセスを通じて異なる要素タイプを発見した場合は管理が困難証明することになる、発生順に
content_string = ''
for p in content:
content_string += str(p)
このアプローチは、データを収集します。おそらく、注目に値する
は、コンテンツを保存する私の方法であり、 。可能であれば、各要素が元々コンテンツ内で発生した順序を再アセンブルするために分割リストの再構築を管理する必要はありません。
魅力のように動作します、ご協力ありがとうございます@パレード – theeastcoastwest