2017-10-12 9 views
1

私はこの記事(https://www.vanityfair.com/style/society/2014/06/monica-lewinsky-humiliation-culture)から記事のテキストを抽出し、底に法的なコンテナを除外しようとしています。テキスト部分は簡単ですが、コンテナを取り除くことはできません。私はそれを法律上の変数と分けて、使いやすくしました。ここでBeautifulSoup(パイソン)を持つ要素を除外する方法

は、これまでの私のコードです:

import requests 
from bs4 import BeautifulSoup 

base_url = 'https://www.vanityfair.com/style/society/2014/06/monica-lewinsky-humiliation-culture' 
r = requests.get(base_url) 
r_html = r.text 
soup = BeautifulSoup(r_html) 

legal = soup.find('div',{'class': 'legal-container'}) 

paragraphs = soup.find_all('p') 

for text in paragraphs: 
    print text.get_text() 

は、どのように私はこれについて行くべきですか?

+0

除外する代わりに、すべての 'p'タグよりも優れた選択肢を定義することはできませんか? –

+0

私はそれを試みましたが、良い方法を見つけることができないようです。リーガルコンテナ内のテキストを含むすべてのテキストは、

などのタグを含みます。法的コンテナは、

まで

の範囲内にあります。それらを排除するための良い方法がありますか? –

+0

セレクタ 'div.article-main p'についてはどうですか?記事のすべての段落 –

答えて

0

すべてのテキストを取得して不要なものを取り除くのではなく、必要な部分を常に見つけ出し、その部分をどのように抽出できるかを確認してください。

場合によっては、という属性がcontent drop-capであるdivのタグsectionにグループ化されています。

content_div = soup.find('div', {'class': 'content drop-cap'}) 

をこの方法で、あなたはセクションによってテキストをグループ化する柔軟性を得る:あなたは使ってこれを取得することができます

sections = content_div.findAll('section') 

しかし、あなたはまだすべての段落を得ることを主張し、法的なコンテナを除外した場合具体的には、soupオブジェクトから有効なコンテナを削除することができます。 BeautifulSoup documentationから

分解し()

Tag.decompose()を使用した場合、完全に それとその内容

を破壊し、その後、ツリーからタグを削除テキストを抽出する前に不要なタグを削除してください:

soup.find('div', {'class': 'legal-container'}).decompose() 
+0

ありがとう!それは非常に便利です!私はまだこれに新しいです:) –

関連する問題