HOME >>  Pythonをさわってみよう >  WEBスクレイピングのための学習用サイトを作る

Pythonをさわってみよう WEBスクレイピングのための学習用サイトを作る

 最近流行りのAIについて以前から興味があったので、その手始めとして「機械学習」について挑戦しています。せっかく苦労して得た知識を生かす方法として、「私の蔵書リスト」なるべージをネット上に作ってみることにしました。仕組みは同じですが、鉄道模型やマイコン関係など、本棚に並べている書籍のリストです。 

 

■ 私の蔵書リスト

 まず、作成したページを紹介しましょう。書籍のリストとなるメインのページを下左に、各書籍の個別のページを下右に示します。

 この蔵書リストのURLは、 https://rtmrw.parallel.jp/book-library/booklist.html です。

 まだまだ、リストとしては10件程ですので役には立たないのですが、学習サイトとしては充分であると考えています。今後は蔵書リストとして充実させていきたいと思っています。

 

  .

■ 想定している学習用の教本

 学習用の教本として選定したのが、インプレス社の「いちばんやさしい Python 機械学習の教本 第2版」です。

■ コマンドの内容

 学習用の教本にそってコマンドを実施していきましょう。ページは102頁の内容からですが、それ以前の88頁の書籍ページのレスポンスを取得するからでも、内容は同じなので学習を実施できます。

 

(1)書籍一覧ページからURLリストを取得する準備

     

 蔵書リストのURL:  https://rtmrw.parallel.jp/book-library/booklist.html
 レンタルサーバーが使用している文字コードは ISO-8859-1 のため、日本文字が文字化けします。このため、下のエンコードコマンドを追加してください。
    res.encoding = res.apparent_encoding

 

(2)書類ページのURLリストを作成する

 これ以降のコマンドは、教本とまったく同じコマンドが使用できますが、文字化け対策用のエンコードだけ追加してください。

     

 

(3)書籍ページをスクレイピングする関数を作成する

     

  ここで、教本に示されたように関数の動作を確認しておきましょう。

 

(4)URLリストの書籍ページをスクレイピングして書籍情報を収集する

     

  スクレイピング実行中に表示されるコマンドを確認しましょう。

 

(5)収集した情報を保存する

 スクレイピングが完了したら、109頁に示された「TSVファイルに保存する」を実行しましょう。

     

     

 ここで、自分は少しうろうろして、ファイル名を "book_data.tsv" だったり、 "book_data-1.tsv" としてしまいましたが、まったく同じものを作ってしまいました。

 **********  でも、大成功ですね!  ************              

■ いろいろ学んだ事

 たったこれだけの内容を実行するだけなのですが、サーバーの拒否にあったため、ほぼ3週間もうろうろ してしまいました。でも多くのことを学びました。

  1. インプレスさんのサイトがだめなら、他のサイトで! といきこんだのですが見事に挫折してしまいました。まず、ページの中の構成がどうなっているのかとそのサイトのHTML記述を調べたのですが、最近の自動生成されたホームぺージは、いろいろなタブが複雑に使われていることに驚きです。WEBスクレイピングのためには、まず、このHTMLで記述されているページ構成を解析できる能力が必要なことを痛感しました
  2. 初心者には、単純なサイトでないと挑戦できないと悟ったので、今回の簡単なサイトを作ることにしたのです。
  3. そして、関係無いと判断したタグ類はすべて削除し、教本に関係するタグだけはそのままにしています。CSSも自分流の方式にしています。
  4. リストから個別ページへのリンクは、相対パスではなくて、絶対パスで記述する必要がありました。自分のホームページでは相対パスを使用しているが、スクレイピングではエラーとなってしまいます。それぞれのメリットとデメリットを理解しておきましょう。
  5. 文字化けの対応策も勉強しました。
  6. BeautifulSoupオブジェクトを検索するときに使うメソッドについて、find() と find_all() や select() の違いなど、まだ理解できていません。生成されたリストからの抜き出しなど、Python のコマンド知識は、まだまだ未熟であることもわかりました・・・・・・・・・(T_T)  。
  7. それにしても、自分のHTMLに関する知識はもう時代ものですね。最近の自動生成されたCSSコマンドにはついていけません。当初は市販されている鉄道模型のリスト一覧表を作ろうなんて意気込んでいたのですが、後期高齢者にとっては無理であることを認識しました。