Looking for beautifulsoup Answers? Try Ask4KnowledgeBase
Looking for beautifulsoup Keywords? Try Ask4Keywords

beautifulsoupbeautifulsoupを使い始める


備考

このセクションでは、美味しいスープが何であるか、それが何のために使用されているのか、そしてそれを使う方法についての簡単な概要について議論します。

Beautiful Soupは、あらかじめインストールされているhtml / xmlパーサーを使用し、Webページ/ html / xmlをタグ、要素、属性、値で構成されるツリーに変換するPythonライブラリです。より正確には、ツリーは4種類のオブジェクト、Tag、NavigableString、BeautifulSoup、Commentから構成されています。このツリーは、パーサーライブラリから作成されたBeautifulSoupオブジェクトのメソッド/プロパティを使用して、 "照会"することができます。

あなたの必要性:多くの場合、次のいずれかのニーズがあります。

  1. Webページを解析して、見つかったタグの数、見つかった各タグの要素数、およびその値を判断することができます。あなたはそれらを変更したいかもしれません。

  2. 要素名と値は、 SeleniumなどのWebページの自動化のために他のライブラリと組み合わせて使用​​することができます。

  3. Webページに表示されたデータを、CSVファイルやSQLiteやmysqlなどのリレーショナルデータベースに転送/抽出することができます。この場合、図書館はウェブページの構造を理解するための第一歩を手伝ってくれますが、他の図書館を使って移転することになります。

  4. いくつの要素が特定のCSSスタイルでスタイル付けされているか、どの要素がどのスタイルでスタイル付けされているかを調べることができます。

あなたのPythonコードで典型的な基本的な使用のためのシーケンス

  1. Beautiful Soupライブラリをインポートする

  2. どのパーサーを使用するかを記述して、BeautifulSoupライブラリでWebページまたはHTMLテキストを開きます。このステップの結果はBeautifulSoupオブジェクトです。 (注意:前述このパーサの名前を、あなたのPythonのpacakgesの一部として既にインストールされている必要があり例えば、 html.parser 、Pythonのに同梱されたパッケージ「-電池と」、内蔵され、次のような他のパーサをインストールできます。 lxmlまたはhtml5lib 。)

  3. "Query"またはBeautifulSoupオブジェクトを'object.method'という構文で検索し、その結果をPython辞書などのコレクションに取得します。いくつかの方法では、出力は単純な値になります。

  4. 前の手順の結果を使って、Pythonコードの残りの部分でそれを使って何をしたいのかを行います。ツリーオブジェクトの要素値または属性値を変更することもできます。変更はHTMLコードのソースには影響しませんが、出力形式設定メソッド( prettifyなど)を呼び出してBeautifulSoupオブジェクトから新しい出力を作成することができます。

一般的に使用される方法:通常、 .find.find_all方法は、入力引数を与え、ツリーを検索するために使用されます。

入力引数は、検索されるタグ名、属性名、およびその他の関連する引数です。これらの引数は、文字列、正規表現、リスト、または関数として表示することができます。

BeautifulSoupオブジェクトの一般的な使用方法は次のとおりです。

  1. CSSクラスで検索
  2. ハイパーリンクアドレスで検索
  3. 要素IDで検索、タグ
  4. 属性名で検索します。属性値。

上記の条件の組み合わせでツリーをフィルタリングする必要がある場合は、trueまたはfalseに評価される関数を記述し、その関数で検索することもできます。

バージョン

バージョン備考パッケージ名発売日
3.x バージョン3.2.1。 Python 2のみ美しいもの 2012-02-16
4.x バージョン4.5.0。 Python 2と3 美しさ4 2016-07-20

BeautifulSoup「Hello World」スクレイピングの例

from bs4 import BeautifulSoup
import requests

main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()

# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]

# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
    print tag.a.get("href")

# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
                            id = "mw-panel").find_all("div",
                                                      class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
    blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]

print blocks_links[0]
 

出力:

"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']
 

美しいスープをインスタンス化するときにあなたの好みのパーサを入力するとno parser was explicitely specified ていno parser was explicitely specified ことを宣言する通常のWarning 回避no parser was explicitely specified

Webページツリー内の要素を見つけるために、さまざまな方法を使用できます。

他にもいくつかの方法がありますが、 CSS classesCSS selectors はツリー内の要素を見つけるのに便利です。

タグを検索する際には、その属性値をTrueに設定してタグを探すことができます。

get_text() は、タグ内のテキストを取り出すことを可能にします。単一のUnicode文字列として返します。 tag.get("attribute") では、タグの属性値を取得できます。

インストールまたはセットアップ

pipを使ってBeautifulSoupをインストールすることができます。 BeautifulSoupのバージョン4をインストールするには、次のコマンドを実行します。

pip install beautifulsoup4
 

パッケージ名はbeautifulsoup4 ではなくbeautifulsoup であることに注意してください。後者の名前は古いリリースを表します。 古いbeautifulsoupを参照してください。