Pythonでウェブスクレイピング – BeautifulSoup ②

Beautiful Soup使い方

では前回練習したウェブスクレイピングの続きを説明します。 前回の記事はこちらからどうぞ。 今日はヤフオクに表示されている入札価格と商品名などをスクレイピングしていきたいと思います。 requestsのライブラリをインストール ではPythonから実際のウェブサイトにアクセスするにあたりHTTPリクエストを送ることになります。その際にRequestsのライブラリを使うのでインストールしましょう。 前回、virtualenvで環境を作った人はアクティベートすることを忘れずに! ではページのHTMLをスクレイピングします。 ウェブページの内容が出てきました。 リスティングのHTMLを見る ではデベロッパーツールで各リストを囲っているカードのエレメントをみます。 見てわかるようにliエレメントでProductというクラスがありますね。 ではこのProductクラスをすべてスクレイピングします。 Pythonファイルを実行してちゃんとスクレイピングできているか確かめましょう。 次に一つのリスティングから必要な情報を吸い取ります。 ではこのリスティングをループさせます。 10分ごとにスクレイピングを実行させる では先ほどのコードをファンクションにして10分ごとに実行させるように設定します。 データをSCVに書き出す 日本語のエンコードは私は”utf_8_sig”で行いました。(アメリカのPCなので。。。 色々試してください。

Pythonでウェブスクレイピング – Beautiful Soup ①

PythonでBeautiful Soupを使ってみよう

今日はPython初心者の方でもわかるウェブスクレイピングについて説明します。 ウェブスクレイピングとはウェブサイトにある情報をスクレイプ(剥ぎ取る)という事です。 例でいうと、過去の天気予報の情報をサイトからスクレイピングしたり、Amazonのサイトの商品の情報をスクレイピングしたりできます。 そのデータをどうするかはあなた次第ですが、このPythonの得意分野である自動化という力を発揮できる素晴らしいプロジェクトになります。 下準備 Beautiful Soupとは Beautiful Soup(美しいスープ)はPythonのライブラリです。このライブラリを使ってウェフスクレイピングを行います。他にもウェブスクレイピングができるライブラリがありますが、一番お勧めがこのBeautiful Soupになります。 HTMLの基本を知っておく ウェブサイトのスクレイピングをするにあたり、HTMLの構造を知らないとどの情報をスクレイピングしたいのか指示ができません。 まずは簡単なサイトでスクレイピングの練習をしましょう。 簡単なHTMLで練習 ローカルの環境にテスト用でHTMLを作成してスクレイピングの練習をします。 不要な人は飛ばしてください。 ではPythonとBeautifulSoupをセットアップしていきましょう。 環境のセットアップ Pythonのライブラリをインストールする際にpip(パッケージマネージャー)を使用します。 このままパッケージをインストールしてしまうと、グローバルにパッケージがインストールされてしまいます。 個人で楽しむ分には問題ありませんが、今後、多数のプロジェクトを並行して作業するにあたり、仮想環境を準備するのが最適になります。 本題とはそれますが、それを学びたい方は下記の動画を見てください。 virtualenvのインストール 仮想環境を使いたい人はこちらのコマンドでインストールします。 インストールができたら仮想環境を作成します。 仮想環境をアクティベートします。 これでコマンドプロンプトの左側に環境名が表示されればOKです。 ここからPythonでインストールしたライブラリはenv内に格納されるのでアクティベートされたときのみPythonがアクセスできます。 BS4のインストール BeautifulSoup4を略してbs4と言います。 何事もインストールする前にはちょっとだけでも公式ドキュメンテーションを見ておくものです。 https://www.crummy.com/software/BeautifulSoup/bs4/doc/ ではこれをインストールしていきましょう。 インストールされました! lxmlのインストール BS4で作業するにあたり、HTMLのパーサー(読み込む役割)をするライブラリが必要になります。 LxmlはHTMLのパーサーのライブラリの一つで、お勧めなのでインストールしていきます。 コードを書く ではやっと下準備が整ったのでコードを書いていきましょう。 私は、テキストエディタはVSCodeを使います。皆さんが使っているものをどうぞ。 では下記のようにコードを書いていきます。 同じディレクトリにindex.htmlで下記の中身のファイルを作成します。 ではコマンドプロンプトからPythonファイルを実行します。 見事!HtmlのファイルがPythonから読み込まれました。 しかし、このままだとHTMLタグも入って見づらいのでbeautifulSoupのPrettifyを使ってキレイにしましょう。 さっきよりキレイになりました! HTMLタグで絞り込む .find ではH1タグのHTMLだけをスクレイピングしたい場合はこのようにします。 soup.findメソッドを使い、タグを指定してあげます。 .fins_all これだと最初のh1タグしかスクレイピングされませんね。 では、すべてのh1タグをスクレイピングするようにしましょう。 findのメソッドをfind_allに変えてみましょう。 すべてのh1タグがスクレイピングされました! … Read more