Python スクレイピング

Python スクレイピング概要

Python については Jupyter Notebook を使っての説明を以前 Python Start の中で行なってきました。
これはとても使い易いのですが WEB との親和性については劣るところがありました。
Goutte Web スクレイピング では PHP Composer Goutte について解説しました。
これは WEB との親和性もよく気に入っていました。
しかし、少し使い方が難しい点もありました。
ここでは、WEB との親和性もあり、使い方も少し平易な Python を利用した スクレイピングファイルを作成していきます。

Requests で Web ペ-ジ取得

Requests による Web ペ-ジ取得について説明していきます。
Web ペ-ジを取得するためにサ-ドパ-ティライブラリ Requests を使用します。
標準ライブラリ urllib.request モジュ-ルより使い易いとされています。
Requests は Ubuntu 20.04 LTS ではインスト-ル済みになっていました。
もしインスト-ルされていない場合は
$ sudo pip3 install requests
でインスト-ルします。
pip3 がインスト-ルされていない、困りましたね。
Python/pyplot インスト-ル にいって、pip3 のインスト-ル方法を確認してください。

Requests で Web ペ-ジ取得・保存

Requests の基本的な使い方を学びます。
Web ペ-ジを取得してそれを表示、その html ファイルを保存します。

  1. お決まりの作法

    Pyton がインスト-ルされている場所を示めします。
    #!/usr/bin/python3
    Pyton3 のインスト-ル場所がわからない場合は
    $ which python3
    で知ることができます。
    ファイルで使用する文字コ-ドを設定します。
    #coding: utf-8
    HTTP ヘッダーを出力
    print("Content-type: text/html; charset=UTF-8\n\n")
    これで Python から出力された文字は Web で見ることができるようになります。

  2. requests でファイルを取得

    ライブラリを取り込み import requests
    url(今回は Gihyo Digital Publishing ペ-ジ)を指定して その HTML ファイルを r のなかに取得します。
    r = requests.get("https://gihyo.jp/dp")
    その内容を表示します。
    print(r.text)

  3. HTML ファイル保存

    取得した HTML ファイルを sc_dp.html として Python ファイルと同じフォルダに保存します。
    with open('sc_dp.html', 'w') as f: f.write(r.text)

以上をまとめると以下のようになります。


  #!/usr/bin/python3
  #coding: utf-8
  print("Content-type: text/html; charset=UTF-8\n\n")
  import requests
  r = requests.get("https://gihyo.jp/dp")
  print(r.text)
  # sc_dp.html として Python ファイルと同じフォルダに保存
  with open('sc_dp.html', 'w') as f:
    f.write(r.text)

TeraPad 等で作成したら、ファイル名を適当に
sc_re_hd_enc.py
として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の 共有フォルダ c:\vbox-html にして、 ブラウザでアクセスできるようにします。
なお、
c:\vb_public_html
はゲスト OS Ubuntu のなかの
/home/yamada/public_html
とリンクしていて共有フォルダの関係にあります。
詳細は ユ-ザ-ごとの公開ディレクトリを用意する を読んでみてください。

sc_re_hd_enc.py ファイル動作確認

それでは sc_re_hd_enc.py ファイルを実行してみましょう。
Ubuntu ディスクトップにある □>_ アイコンから端末画面を開き、 public_html ディレクトリに移動します。
yamada@ubuntu-20:~$ cd public_html
私の Virtual Ubuntu も 20.04LTS にアップグレ-ドしてしまいました。
yamada@ubuntu-20:~/public_html$ python3 sc_re_hd_enc.py

   
  Content-type: text/html; charset=UTF-8

  <!DOCTYPE HTML>
  <html lang="ja" class="pc">
  <head>
  <meta charset="UTF-8">
  <title>Gihyo Digital Publishing … 技術評論社の電子書籍
  <meta http-equiv="Content-Style-Type" content="text/css"/>
  <meta http-equiv="Content-Script-Type" content="application/javascript"/>
  <meta name="description" content="技術評論社の電子書籍(電子出版)販売サイト"/>
  ・・・・・・・

のように表示されれば OK です。
WEB で表示する前にエラ-がないことを確認してください。
エラ-がなければ、WEB でも表示してみましょう。
ブラウザのアドレスバーに
http://v-host.jp/sc_re_hd_enc.py
または

http://localhost:8080/~yamada/sc_re_hd_enc.py

と入力して、画面に
Gihyo Digital Publishing
技術評論社の電子書籍サイト
が表示されれば OK です。
なお、CSS が取得できていない、画像が見えていない等の制約があるので それなりの画面しか見えません。
そして
yamada@ubuntu-20:~/public_html$ ls -l
として
sc_dp.html ファイル
が作成されているのを確認してください。

ここまでで、Requests で Web ペ-ジを取得する事ができました。
引き続き、Web ペ-ジから必要なデ-タを抜粋していきます。


  • Web ペ-ジから必要デ-タを抜粋 に進む
  • Python/pyplot 動作確認概要 に戻る
  • Python/pyplot インスト-ル に戻る
  • 70VPS に戻る