表示されている Web ページ コンテンツを効果的にスクレイピングする方法 Web スクレイピングには Web ページから特定のデータを抽出する必要がありますが、結果を制限するのは困難な場合があります表示されるテキストのみに。人気の Web スクレイピング ライブラリである BeautifulSoup を使用すると、このプロセスが簡素化されます。 問題の理解 表示テキストをスクレイピングするには、スクリプト () などの要素を除外することが重要です。 )、コメント (<!-- -->)、CSS (<style>)、その他</p> <p><strong>BeautifulSoup を使用したソリューション</strong></p> <p>次に、BeautifulSoup の findAll() メソッドとカスタム フィルターを使用した簡単なソリューションを示します。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre>from bs4 import BeautifulSoup from bs4.element import Comment from urllib.request import urlopen def tag_visible(element): if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']: return False if isinstance(element, Comment): return False return True def text_from_html(body): soup = BeautifulSoup(body, 'html.parser') texts = soup.findAll(text=True) visible_texts = filter(tag_visible, texts) return " ".join(t.strip() for t in visible_texts) html = urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read() print(text_from_html(html))</pre><div class="contentsignin">ログイン後にコピー</div></div> <p><strong>説明</strong></p> <p>コード:</p> <ul> <li>不要なタグとコメントを除外する関数 tag_visible() を定義します。</li> <li>filter() を使用して、次のすべてのテキスト要素 (テキスト) に tag_visible() 関数を適用します。 BeautifulSoup オブジェクト。</li> <li>表示されているテキストを 1 つのテキストに結合します。 string.</li> <li>urlopen().</li> </ul> を使用して、指定された URL の HTML を取得します。