鉄道模型工作実験室

Nゲージ鉄道模型に関する工作や実験を行っています。

WEBスクレイピングの学習用サイトを作る

先回、WEBスクレイピングの学習サイトについて報告しましたが、公開できるように自分の「私の蔵書リスト」なるサイトを作りましたので公開いたします。

私の蔵書リスト

まず、書籍のリストとなるメインのページを下記のように設定しています。

   

そして、各書籍の個別のページは、下記のようにしています。

   

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

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

  • 書名: いちばんやさしいPython機械学習の教本第2版
  • 出版社:株式会社 インプレス
  • 著者: 鈴木たかのり氏ほか
  • ISBN: 9784298016076
  • 対象部分:Chapter 3 Lesson 23 複数のWebページからデータを集ましょう

コマンドの内容:

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

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


(2)これ以降のコマンドは、教本とまったく同じコマンドが使用できます。

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


  ******************** 大成功です! *********************

感想

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


インプレスさんのサイトがだめなら、他のサイトで! といきこんだのですが見事に挫折してしまいました。まず、ページの中の構成がどうなっているのかと他のサイトを調べたのですが、最近の自動生成されたホームぺージは、いろいろなタブが複雑に使われていることに驚きです。WEBスクレイピングのためには、まず、このページ構成を解析できる能力が必要なことを痛感しました。
初心者には、単純なサイトでないと挑戦できないと悟ったので、今回の簡単なサイトを作ることにしたのです。
  学習用にこのような単純なサイトで充分ですね。
  活用していただけると幸いです。
 *********************************************************************

Pythonを使用した機械学習の教本を開く

最近流行りのAIについて、以前から興味があったので、その手始めとして「機械学習」について触ってみることにした。
そのための教本として選定したのが、インプレス社の「いちばんやさしい Python 機械学習の教本 第2版」である。
現在のAIブームは第3次の深層学習の時代であり、機械学習は40年前から始まった第2次ブームで発展したとのこと。興味があったのは、データ収集方法としてのWEBスクレイピング手法なのである。
この手法は、いろいろなサイトから目的とする情報を収集する方法なので、鉄道模型のWEBサイトを開設している小生としては興味あるテーマなのである。
そして、使用するアプリが Python とくれば、一度は挑戦してみたくなるのであった。


でも、大きな壁にぶつかってしまったのである。

  ********************************


第1章、第2章はすいすいと軽く読み飛ばし、第3章の「スクレイピングでデータを収集しよう」でつなずいてしまったのである。
今回は、そのつなずき具合を記録していくことにする。


1)WEBページのアクセスを拒否される。
第3章の初めに記載されているコマンドを Python に打ち込んで実行すると、エラーが表示され、それ以降の手順が実行できないのである。初めからつまずいているのである。


import requests
res = requests.get('https://book.impress.co.jp/books/1119101162')
res.status_code


たったこれだけのコマンドであるが、実行すると長いエラー文が表示されて、正常時に表示される"200"のコードが表示さず、それ以降のコマンドを受け付けてくれないのである。
教本のうたい文句として、講義+実習のワークショップ形式で、楽しく学べる「はじめてでも挫折しない」Pythonの入門書です------とのことですが、まずもって”実習”が出来ない状態となっているのです。
ソフトのインストールを間違えているかも知れないと、再インストールを実施したが、結果は同じであった。


2)なぜ拒否されるのだろうか?
学習が前に進まないので、いろいろ知れべてみた。まず、https://book.impress.co.jp/ として実行するとやはりエラーが出た。このことはサーバーの入口で拒否されていることを示唆している。
そこで、Yahoo やAmazon などの有名サイトや、普段からアクセスしている20ヶ所ほどのサイトにお邪魔してみたが、すべて OK 表示の"200"のコードを返してくれた。
このことから、教本が提示しているインプレス社だけが、アクセスを制限していると判断しました。


うるさいアクセスを拒否することは、理解できますが、何も「講義+実習のワークショップ形式のサイト」まで拒否するとは、出版物における詐欺ではないか-------!❓


3)問い合わせるも返事なし
もう1週間以上たちますが、返事がありません。無視されているのか、重大なトラブルなのか。この教本は第2版として、2023年2月21日に出版されています。初版は2020年とのことですので、今年の2月までは何ら問題なかったと思われます。


4)学習用のダミーサイトが欲しい
どれだけの読者がアクセス拒否にあったのかわかりませんが、アクセス拒否されると学習が進みません。そこで、自分でダミーサイトを作ってみることにしました。その内容を下記に示します。


  ********************************
作成したダミーサイトの内容を下に示します。

そして、個別の書籍については

のページを作りました。学習用のダミーサイトですから、スクレイピング対象の部分は元本と同じようにするために修正していませんが、他の不要な邪魔な部分はすべて削除しています。必要なリンク以外もすべて削除しています。
  **********************************
ダミーサイトは、レンタルサーバーに開設している我がサイト「鉄道模型工作実験室」内に構成しましたが、著作権を心配して公開はしていません、
  **********************************
文字化けなどのトラブルもありましたが、結果は良好でした。スクレイピングは実施でき、教本の学習を進めることが出来ました。

 ダミー作戦は大成功である  

****************************************************************************

プライベートアーカイブを作る

 愛読していた「鉄道模型机上の空論」さんのブログサイトが、閉鎖されるとのアナウンスが出ていた。最近の更新が途絶えていたので心配していたがやはり閉鎖されるようだ。
 蒸気機関車の分解調査レポートなど、内容がピカイチであったので大いに参考にさせてもらったが残念である。
 ところで、ブログが閉鎖されるとなると、これらの報告レポートを見ることが出来なくなってしまうのです。そこで、プリントアウトしようとしたがあきらめました。本文以外に余分な情報が多すぎる事や、画像部分が小さいので印刷するには効果的ではないと判断した。その代わりとして、興味ある報告レポートを中心とし、自分のパソコン内にアーカイブを作ることにした。自分のパソコン内のことであるので、著作権には触れないと考えている。


 ***********************************************
 アーカイブを作成するにあたり、このブログの構成を見てみると4種類のページから構成されていることが分かった。


(1)数件の個別報告をまとめている目次的なページ構成。コメント欄が表示されない。
(2)個別報告ごとのページ構成で、コメント欄も表示されている。
(3)画像関係をまとめた目次のページ。
(4)写真やイラストなど、拡大図として一つずつ表示しているページ。


 そして、広告の欄がうるさくまとわりつき、非常に邪魔となっている。また、拡大図は横幅が640ピクセルを基本とし、ピントがばっちりで綺麗な写真であり、撮影技術のレベルが推定される。アーカイブはこの拡大写真を活用することにした。


 単に、ページを保存するだけの処理では、この拡大図を保存することは出来なかった。そこで面倒だが、ページを再編集することにした。個別の報告レポートとしての内容に従って、次の2種類のページ作成することにした。なお、ブラウザは Googl Chrome を使用しています。


(A)ます、個別報告のページを表示しておき、広告の欄を消した状態で一つのファイルとして保存する。”名前を付けて保存” ⇒ ”ウェブページ、1っのファイル(*.mhtml)”


(B)各写真の拡大図を一つずつ事前にダウンロードしておき、横幅が大きいものは640ピクセルに縮小する。そして、横幅700ピクセルの専用のページを作り、テキスト部分はサイトのページからコピー&ペーストで取り込み、画像部分はダウンロードした拡大写真をはめ込んで編集して行く。手間がかかり根気がいる作業であるが、写真の質と報告内容が立派なのでせっせと作業を実施した。


作成したアーカイブです。 まず目次のページを作りました。

   

次に、タイプ(B)の個別のページです。

   

もとの原本のページは、下の様な状態です。

  

 自分にとって必要な情報だけを取込んでおり、大切に保管して参考にして行きたいと思います。
 ***********************************************************************
 著者のバラックモデルさん、有用な情報を有難うございました。今後もどこかで継続されることを期待しています。
 ***********************************************************************
追記:
この私の投降後、すぐ後で、著者のバラックモデルさんはSeesaaブログにそっくり移転される処理を実施されていました。安心しました。今後ともよろしく。
 ***********************************************************************