Beautiful Soup 4を使用しPythonでHTMLを解析しfind_allメソッドで指定した情報を抽出する

スポンサーリンク

Beautiful Soup 4でHTMLを解析しfind_allメソッドで指定した情報を抽出する

(Windows10上)

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■beautifulsoup4のインストール

pip install beautifulsoup4

Windows10で、コマンドプロンプトからpip(パッケージ管理ツール)を使い、beautifulsoup4をインストール。

なお、運営者はpythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えます。

py -3.8 -m pip install beautifulsoup4

切り替えるために、上記のコマンドを入力し、Enterキーを押します。

Enterキーを押すと、インストールが開始され、「Successfully installed」と表示されます。これが表示されれば、正常にbeautifulsoup4のインストールは完了となります。

■コード

from bs4 import BeautifulSoup #BeautifulSoupはHTMLから狙ったデータを抽出するため
from urllib import request #urllibはURLを取得する。


url = 'https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%8A%E3%83%81%E3%83%A5%E3%83%A9%E3%83%AB'
response = request.urlopen(url)
soup = BeautifulSoup(response)
response.close()


toctext = soup.find_all('span', class_='toctext')
print(toctext)

 

今回は、テストとして、ウィキペディアの海外ドラマ「スーパーナチュラル」ページ(https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%8A%E3%83%81%E3%83%A5%E3%83%A9%E3%83%AB)から、find_allメソッドで指定した情報を抽出してみる。テストとして選んだのは、この海外ドラマが好きだからだ。

抽出するのは「目次」の項目全てである。まず、ウィキペディアの海外ドラマ「スーパーナチュラル」ページのソースを確認してみる。

確認すると、目次の項目は、

<span class="toctext">概要</span>
<span class="toctext">あらすじ</span>

上記のようなspan要素、class属性が組み合わせている。なので、find_allメソッドでclass属性が「toctext」であるspan要素を抜き出すコードを書いてみる。

soup.find_all('span', class_='toctext')

書いたコードをWindows10で、コマンドプロンプトから実行してみる。

■実行結果

ウィキペディアのページ上からclass属性が「toctext」であるspan要素を検索し、情報が抽出された。

■疑問点

情報が抽出されたのだが、

UserWarning: No parser was explicitly specified, so I’m using the best available HTML parser for this system (“html.parser”). This usually isn’t a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. The code that caused this warning is on line 6 of the file C:\Users\user\beautifulsoup-test.py. To get rid of this warning, pass the additional argument ‘features=”html.parser”‘ to the BeautifulSoup constructor.

上記のようなUserWarningが表示された。調べてみると、「Beautiful Soup 4.x では parser を明示指定しよう」という内容を投稿されている方がおり、どうやらBeautiful Soup 4.4.xではparserを明示指定しないと、自動選択され、UserWarningが表示されるようだ。自動選択では依存してしまうと環境によって動作が変わるので、parserを明示指定した方が良い。

■今回参考したページ

URL:https://www.atmarkit.co.jp/ait/articles/1910/18/news015.html

URL:https://gammasoft.jp/blog/difference-find-and-select-in-beautiful-soup-of-python/

■今後やりたいこと

Pythonでスクレイピングした情報をCSVに保存するまでをやってみたい。

コメント

タイトルとURLをコピーしました