※なんとか転職活動も落ち着き、一番最初にやり方を教えてもらって書いた初Qiitaがこれなのですが、今見返すとグチャグチャなので徐々に整理・翻訳作業再開します
そもそも Python、BeautifulSoup、スクレイピングとは
Pythonはプログラミング言語の1つで、おそらく始めに学ぶことが多いHTML&CSSと比べると次のような特徴があります。(なお、HTMLは本当はマークアップ言語と言います。)
①作れる機能は比べものにならないほど多い(※よく利用させてもらっている方の以下のQiita記事だけでも大量に用途が載っています。)
https://qiita.com/python_academia/items/62aefbf4e373cd2aa496
②その分???パーツが細かすぎる
②の性質のため、ほとんど最初に import ~ というのを最初に書いて必要なパーツを使うための設定をしてから、コードを書いていきます。そして、この ~ に書くものをライブラリといいライブラリの中に入っている便利機能(の小さいパーツにあたる)プログラム1つ1つをモジュールと言います。
そのため例えば、ここで紹介するライブラリーの1つである beautifulsoup4 を使いたい場合は、ターミナル(powershellやzsh、もしくはコマンドプロンプト)で例えば
pip install beautifulsoup4
と打ってインストールした上で(pipコマンドと言います。他にはPoetryというPython版パッケージ管理システムがありますが、私はPoetryはまだ使いこなせません。)
from bs4 import BeautifulSoup
soup = BeautifulSoup("<html>hogehoge</html>,""html.parser")
soup.html
--------
みたいに書き始めます。(bs4はbeautifulsoup4 のことです。ややこしいのですが、1行目のBeautifulSoup はライブラリ名、2行目のBeautifulSoupは同名の、beautifulsoup4モジュールに入った関数名です。)
なお、BeautifulSoup は(HTMLやXMLといったマークアップ言語のコードから)集めてきたデータを整理しやすい形に微修正し、その中から必要なものだけ抽出したり、成形したりするような処理(これを「スクレイピング」と言う。)をするためのモジュールです。
上記の3行をターミナル(powershellやzsh等で python と打って>>>というマークが出てから)で実際に1行ずつ順に入力してもらうと分かるのですが、最後Enterを押した時点で
>>> soup.html
<html><body><p>hogehoge</p></body></html>
みたいな感じでオブジェクトが出力されます。(※ここでは、「データに関数や属性が実は隠れているようなもの」という感じの認識で大丈夫です)そして、これに対して、メソッドや関数を使って抽出したい要素を抽出したり、jsonファイルを作ったりするというのが、Python で beautifulsoup4を使ってできることの大きな流れになります
(何人か現役のベテランエンジニアの方の話を聞く限り、スクレイピングをしたいときには、selenium かbeautifulsoup4を使うことが一般的であるようです。※2023年11月Xのアンケートで確認しました。なお以下の記事のようにスクレイピングには他にもいくつか方法があります。)
なお(BeautifulSoupに限らず)ライブラリを使うに当たってここで1つ大きな問題があります。(おそらく、これがプログラミングには挫折者が多いという言われる原因の1つになっているのではないかと思っています)
それは、「公式ドキュメント、つまりは各プログラムの取り扱い説明書は長い上に一般的に英語長文であることが多い。結果、分からないことを調べようとしても、その英語を読むのに時間が掛るし、時に作成者本人による説明が分からないことがある」ことです。
とどのつまり、協力して欲しいこと
chat-GPT等のAIやGoogle翻訳の精度が上がっているとはいえ、英語と日本語だと少なくともニュアンスや意味の受け取り方が違ってきます。そして、Pythonも基本英語圏の人が中心に作ったプログラミング言語であり、公式ドキュメントはがっつり英語であることが多いので、同様の現象が起こりえます。
そして、このBeautifulSoupも以前のバージョンのbeautifulsoup3を近藤さんという方が2013年に翻訳してくださったのを最後に現在自分が調べた限りは、最新版のPython3に対応した公式ドキュメントの日本語翻訳はありません。そのため、現在、以下リンクのGoogleドキュメントで知らない単語だけ調べて自分の勉強の意味も含めて日本語翻訳を作っています。(※まだ精度は低いです)
(※上記のリンクには共同編集の権限を付与してあります。また、バックアップは度々取っています。)
私自身がスクレイピングや機械学習を勉強しながら少しずつ翻訳作業を進めてはいますが、私も一応人間なので、この文書にも私の主観や誤訳が紛れまくっているはずです。そのため、少しでもいいので変なところがあったら指摘・修正をしてもらいたいというのが、このQiitaの趣旨です。なお、このQiitaを書く以前に何人かの方に指摘をいただいたのですが、まだ2023年11月上旬に3~4P分ぐらいしか、かなり丁寧に見てもらった修正分を全て補正できていません。
なお一部例外もあります。
例① Pythonをインストール状態ですでに入っている標準ライブラリの公式ドキュメント(※これは、上記のpipにあたる作業が必要なくimport ~ からで大丈夫)
例② Pythonのフレームワークの1つ(Flask)の公式ドキュメント