webサイトのソースコードを取得するプログラム(スクレイピング)の解説です。
ライブラリrequestsをインストールします。
ライブラリは特定の処理ができるようにまとめたもの。とでも理解すればよいでしょう。
やりたい処理によって用いるライブラリが異なります。
コマンドプロンプトを用いてスクレイピングするためのrequestsをインストールします。
pip install requests
と入力して実行します。
※下記のようなエラーが出る場合がります。
pipは内部コマンドまたは外部コマンドとして認識されておりません。
解決方法はこちらがわかりやすいと思います。
IDLEを用いて開発、実行を進めます。
IDLEはpython実行用のアプリケーションです。
スタートメニューから起動できます。
起動したらFile→New Fileを選択すると新規で真っ白なWindowが表示されます。ここにプログラムを記述します。
ここからは実際にコードを書いていきます。
webサイトのソースコードを取得するプログラムになります。
import requests
→requestsライブラリを利用するためインポートします。
url = “https://fukutakublog.com/it/python/an-introduction-to-python”
→取得先のwebサイトのURLを入力します。
取得先URLを変数:urlに代入します。
※変数とは箱のような入れ物をイメージしてみてください。
response = requests.get(url)
→requestsライブラリに.get(url)をつけることで
url(https://fukutakublog.com/it/python/an-introduction-to-python)を取得
して、それを変数:responseに格納するという意味です。
※変数:urlを利用せず下記のように書いてもOKです。
response = (“requests.get(https://fukutakublog.com/it/python/an-introduction-to-python”)
print(response.text)
→取得したソースコードをテキスト形式で表示するという意味です。
それでは実行してみましょう。
RunタブのRun Moduleから実行できます。
F5キーからでもOKです。
下記のように表示されていればOKです。
タブルクリックでソースコードが表示されます。
テキストファイルに取得コードを書き込む処理になります。
まず書き込みするファイル名を指定します。
filename = “source_code.txt”
そのファイルを書き込みモードで開きます。
mode = “w”は書き込みモードを意味しています。
filename = open(filename,mode = “w”)
取得コードを書き込みます。
filename.write(response.text)
最後にファイルを閉じます。
filename.close()
以下がwebサイトのソースコード取得からテキストファイルへ下記込むまでの処理になります。
実行してみましょう・・・。
あれ???
UnicodeEncodeError: ‘cp932’ codec can’t encode character ‘\xa0’ in position 147: illegal multibyte sequence
とエラーがでてしまいました。
このエラーの意味を解説します。
cp932では’\xa0’って何を意味しているかわからないと言っています。
cp932は文字コードの一種です。
文字コードというのはコンピューターが理解できる文字の表し方を意味します。
例えば”あ”を表現する文字コードUTF-8では0xE38182となります。
しかし文字コードUTF-16では0x3042となります。pythonでは基本UTF-8を用いて表現します。
なのですがwindows環境の場合、今回のように外部出力する際cp932を用いて変換をしてしまいます。
cp932では変換できないコードがある、それが’\xa0’なのです。
今回の場合、UTF-8を出力する際に指定することで解決します。
filename = open(filename,mode = “w”, encoding=’UTF-8′), encoding=’UTF-8’を加えます。
以下の通りです。
実行してみましょう。
ソースコードがある同じ階層に
source_code.txtができていると思われます。
開いてみましょう。
以下のようにソースコードが取得できていれば成功です。
参考書籍は下記になります。