見出し画像

WindowsでPythonを動かしてスクレイピングしよう(後編)

この動画のように、ツイッターからトレンドをスクレイピングして画像検索をするサンプルプログラムを動かす方法について、以下で説明します。

前編では、Python開発環境の構築方法を説明しています。
まだの方はこちらもご覧ください。


Pythonプロジェクトの作成

①あらかじめ、Pythonファイルと実行用ショートカットを以下からダウンロードし、PC内にフォルダを作って保存しておきます。
(といいつつ、ショートカットは今回使わなくなりました💦)

保存したフォルダのパスを、PyCharmで指定するためメモっておくのですが、エクスプローラ上部のパス表示は簡易表示されています。その右側の空白部分をクリックすると、正式なフルパスが表示されるため、こちらをメモっておきます。

②PyCharmの起動画面で、「新規プロジェクト」をクリックします。

③フォルダアイコンをクリックし、先ほどメモったパスを選択して、「OK」をクリックします。

④「main.pyウェルカムスクリプトの作成」のチェックを外し、「作成」をクリックします。

⑤ディレクトリにファイルがあるため、以下のダイアログが出ますが、「既存ソースから作成」をクリックします。
新規プロジェクトが作成されますが、初回のためPythonインタプリタのダウンロード等が始まり、時間がかかりますのでしばらく待ってください。

また、Pythonインタープリタがインストールされるため、以下のプログラムがスタートメニューから見えるようになりますが、特に直接起動するものではないので無視してください。

⑥プロジェクトが作成されると、開発画面になります。フォルダの左の部分をクリックすると中身が展開され、先ほど保存したファイルが見られます。


パッケージ(モジュール)のインストール

①「~.py」ファイルをクリックすると、右側にファイルが開かれます。(「~.lnk」は開かないでください。)

ファイルの上の方には、「import」とかかれた文があります。これは、Pythonのモジュール(ライブラリ)を取り込むための記述です。例えば、「import time」は、timeモジュールを取り込み、「from selenium import webdriver」は、seleniumモジュールの中のwebdriverを取り込みます。

また、ここでは、seleniumが参照できないため波線が引かれています。
そして、エラー・ワーニング・タイポの件数が右上に表示されています。ここをクリックすると、下部にそれぞれがリストで表示されます。ただ、基本的に見るべきはエラーの箇所だけでいいと思います。

②次に、エラーを解消しましょう。
fromやimportで指定するモジュールは、存在しない場合はインストールする必要があります。ただ、PyCharmでは、不明なモジュール名をマウスオーバーすると、パッケージのインストールがワンクリックでできる便利な機能があります。

「selenium」の上にマウスポインタを置くと(少しもポインタが動かないようにしてください)、以下のように表示されるので、「パッケージSeleniumのインストール」をクリックします。
すると、seleniumのパッケージ(モジュール)が自動でダウンロードされインストールされます。しばらくすると完了し、波線が消えます。
画像にはありませんが、同様にして、keyboardパッケージもインストールしてください。全てインストールすると、エラーの件数表示も消えます。
(keyboardは後からコード追加したので・・・すみません)

以上でエラーは解消しましたが、このまま実行をするとエラーになってしまいます。もう1つ、環境設定する必要があります。


ChromeとChromeDriverのダウンロード

今回のコードは、SeleniumというChromeDriverを使用したWebスクレイピングモジュールを使用しています。これは、同一バージョンのChromeとChromeDriverを所定のパスに設置する必要があります。ChromeDriverとは、Chromeを使ってWebスクレイピングをするためのドライバで、Seleniumから読み込まれるものです。

ここで問題が発生します。ChromeDriverは、特定のバージョンをWebからダウンロードするのですが、Chrome自体は、自動でアップデートされてしまうので、使っているうちにバージョン不整合が発生してしまいます。気づかぬうちにプログラムが停止してしまうことになりますし、その度にChromeDriverをダウンロードするのも手間です。

そこで登場するのが、ChromePortableです。これはUSBメモリ等に入れてインストールなしに利用することを目的としたポータブルバージョンのChromeです。こいつは、実は自動アップデートしないのです。自動アップデートしないのでセキュリティが心配な方は、定期的にアップデートしてください。ただし、後述するChromeDriverも同時に同じバージョンにアップデートする必要があります。私はセキュリティに詳しくないですが、スクレイピングだと毎回同じサイトにしかアクセスしないので、そのサイトがウィルスに感染しない限り大丈夫では?と思っています。個人的見解です。w


ChromePortableの64ビット版ダウンロードはこちらになります。

「Download from SourceForge」をクリックするとファイルがダウンロードされます。このとき、下に記載されているバージョン情報を確認しておいてください。
もし32ビットWindowsをお使い等、32ビット版が良い、という場合は、その下に小さく「Also Available: Google Chrome Stable」とあるので、こちらからダウンロードしてください。

ダウンロードしたインストーラーを実行して、インストールを進めます。ここで、もし以下ようなエラーメッセージが出てた場合は、ダウンロードしたファイル名が「~_online.paf (1).exe」などになっているので、「~_online.paf.exe」にリネームするか、既にその名前でダウンロードされているファイルを探します。

インストーラーが起動すると、以下のように画面遷移します。インストール先のフォルダは、「C:\GoogleChromePortable64」等に適宜変更します。「GoogleChromePortable64」フォルダはインストール時に作成されます(Cドライブ直下が嫌な方はご自由に変更してください)。


次に、このChromeと同じバージョンのChromeDriverを以下からダウンロードします。

クリックすると以下のページに飛びますので、Chrome Portableのバージョンが106.xxの場合は、ChromeDriverも106.x.xxxx.xxのものをダウンロードします。マイナーバージョンの「.x.xxxx.xx」の部分は違っていて構いません。こちらはWindowsは32ビット版のみです(Chromeが64ビットでも、こちらは32ビットで大丈夫です)

こちらは、zipの中にあるexeファイルを、先ほどChromePortableをインストールした場所「C:\GoogleChromePortable64」等にコピーします。同じバージョンのペアをまとめて管理することをお勧めします。


ソースコードのパラメータ設定

次に、PythonプログラムからChromePortableとChromeDriverを実行できるよう、上記でインストールしたファイルのパスをソースコードに記述します。

CHROME_PATH:  ChromePortableのインストールしたパス
DRIVER_PATH:     ChromeDriverのインストール(コピー)したパス

また、スクレイピングにTwitterを利用しますので、Twitterのご自身のアカウントも記載します。パスワードが平文ですがすいません。抵抗ある方は捨て垢作ってください。w

Twitter_name:   Twitter名
Twitter_id:         Twitter ID
Twitter_pd:        Twitterパスワード


プログラムの実行

さて、いよいよ、プログラムの実行ですが、同じPCでTwitterにログインしたことが無い場合は、あらかじめChromeやEdge等のブラウザでログインを何度かしておくと良いかもしれません。普段使わないところからのアクセスですと、Twitterのセキュリティ検知が働く可能性があり、以下のような通知が来ます。プログラムのテストをしまくっていたらすごいことになってました。w 特に今回のChromeDriverを用いたプログラムはCookieを保存しないので毎回Twitterからは不審者扱いです。

では、以下、プログラム実行の手順です。

①ソースコード上でマウスを右クリックして、「実行」をクリックすると、その開いているファイルのコードを実行できます。また、ここでは説明しませんが、その下の「デバッグ」をクリックするとデバッグ実行もできます。

②プログラムを実行すると、画面下部に「実行」タブが自動で開かれます。手動で開閉する場合は、左下に「実行」タブがありますので、こちらをクリックしてください。ここでは、ソースコード上でprint()文で出力した文字列や、エラー等のメッセージが出力されます。

③プログラムを実行すると、最初にTwitterスクレイピング用のChromeと、Google画像検索用のChromeの2つが起動されます。そしてTwitterへ自動ログインします。その後、以下の処理を行います。

Twitterからトレンドワードをスクレイピング
→Google画像検索でトレンドNo.1を検索して表示
→Google画像検索でトレンドNo.2を検索して表示
・・・・

そして一通りGoogle画像検索が終わると、再度Twitterからスクレイピングを行い最新のもので同じ処理を繰り返していきます。

エンドレスなので、中断したいときは、PyCharmのウィンドウを最前面に表示した状態で、F4キーを押し続けます。Googleが画像検索が1つ終わるごとにキー入力をチェックして、F4キーが押されていると終了メッセージを表示し、終了処理が行われます。
プログラムが終了するまで少し時間がかかりますが、終了すると、以下のようにPyCharmがメッセージを出力します。

以上がコードの実行から終了までの手順ですが、ソースコード自体の構成は、以下のようになっています。プログラムを実行すると、「①初期設定等」「②メイン処理」の順番に、上から順に実行されます。関数定義は、②のメイン処理の中で呼び出されます。
コード中にコメントで説明を多めに入れていますので、詳細はソースコードを読んでください。w

ところで、Twitterのトレンド検索のページが、このようになってしまう場合があります。これは、海外にあるVPSサーバーで実行した例です。日本のトレンドを検索できないのだと思われるので、国内のWindowsマシンで実行することをお勧めします。


最後に

以上、前編・後編を通して、Python実行環境を構築し、スクレイピングのサンプルプログラムを実行する方法を説明いたしました。
大変お疲れ様でした。

一度この環境が作れれば、Pythonを使ったプログラミングが簡単にできるようになると思います。サンプルコードで分からない部分は、関数等を検索すれば多くの情報がWebで入手できると思います。
応用してその他のスクレイピング等、試していただければ幸いです。

また、何か分かりにくい部分や、間違っている部分等ありましたら、コメントにてご連絡いただけますと助かります。宜しくお願いします。




この記事が気に入ったらサポートをしてみませんか?