Python学習備忘録②　Anacondaを使わず、ScrapyでLaravelで作った自分のポートフォリオをモルモットにしてスクレイピングしてみた（補足編）

____
※本Qiita は

（１）「**初心者からちゃんとしたプロになるPython基礎入門　大津　真・田中賢一郎　共著　MdN社**」
（２）「**確かな力が身につくPython「超」入門　鎌田正浩　著　SB Creative社**」👈個人的にはPythonの最初の１冊として最適でした
（３）https://qiita.com/python_academia/items/62aefbf4e373cd2aa496

を主に利用した学習をもとに作成しました。（なお、私は（１）の途中で一旦、tkinterって結局何なん??(´д｀)??　⇒（２）を読んでから（１）あぁ(･∀･)みたいな感じでした。「～入門」にも甘辛が存在するようです。）
___

なお以下、Anaconda（※３）を使わずに 
<h3>Visual Studio CodeのみでScrapyを使用してみた感想等

を記述しました。少し長くなったため、本編（A）・（B）と補足編（（C）～（F））に分けました。
　また、Pythonでしか使わないような単語を使わないと、説明がそれこそニシキヘビが如く超長くなりそうなので、できるだけ本Qiitaを短くするため、また、備忘録としても意味合いを兼ね今後個人的に謎単語であったものには一番下に注釈をつけました。（※～の数字部分がそれぞれ対応します）

___
<h2>少し使ってみた感想
<h4>・そもそも「スクレイピング」は自分の成果物にかけても効果を発揮する？？？
<h4>・Scrapyは比較的スクレイピングそのものにかかる時間が少なそう
<h4>・yield文とかいう謎言語さえクリアすれば、Scrapyはリファクタリング（refactoring、再設計）の際のコードの重複を調べるのに重宝しそう。jsonが作れるのは便利
<h4>・以外とAnacondaなしでも結構使えそう。やっぱりPythonって無理にAnacondaを使う必要はないんじゃないか？？（真のよわよわにとって環境構築って本当に面倒いんで（´д｀））

___
本編　https://qiita.com/thinking-weed/private/9de1556ccc40904b411c
___

<h1>（C）スクレイピングには他にもいろいろある…規約や謎単語も多い…(´д｀)

なお筆者が、現状、スクレイピングの方法として存在を認知しているのは、他には以下の４つ

**①beautifulsoup4（ビューティフルスープ） の利用（Pythonのライブラリー）**

**②Selenium の利用( Webアプリケーションをテストするためのポータブルフレームワーク。Javaで書かれている…らしい？？（´｡｀)どゆこと？？)**

**③GAS（Google Apps Script）の利用（Googleが作ったJavascriptっぽいやつ）**。

**④requestsの利用（Pythonのライブラリー）**

※③については詳しくは「Google Apps Script クローリング＆スクレイピングのツボとコツがゼッタイにわかる本　五十嵐貴之, 柴田織江, 五十嵐大貴 共著」が今のところ市販の本では詳しく書かれてあるように思います

※「スクレイピングとは何か」については概要を以下の記事にもまとめてあります。

https://qiita.com/thinking-weed/items/a468b3deccea13710359

<h2>（D）スクレイピングの規約の参考資料（例えば、X（旧Twitter）上では現在できないし、破ったら捕まるか罰金）ヽ(゜▽゜　)-Ｃ<(/;◇;)/ 

①（スクレイピングの規約全般に関するもの）
　https://rpa-technologies.com/insights/web-scraping/
②（Xのスクレイピングの禁止について）
　https://crypto-ai-digest.com/2023/09/09/1694195108596/
  
<h2>（E）インストールの方法

公式ドキュメント　https://scrapy.org/

　冒頭の学習参考書（２）では、仮想環境（※１）を提供するディストリビューション（※２）の１つであるAnaconda（※３）による方法が載っていますが、個人的には、**VScodeのターミナルで上記の公式ドキュメントのトップ画面に載っている以下のpip コマンドを使うのが貼るだけだし楽でした。**

```powershell
pip install scrapy
```

なお、きちんとインストールされたかの確認・必要なライブラリのバージョンの更新は、
次のコマンドを使って行いました。
```powershell
py -m pip list --outdated
```
```powershell
py -m pip install --upgrade 更新したいパッケージ名
```
参考資料
https://gammasoft.jp/support/how-to-upgrade-pip/

<h2>（F）Scrapy には他にどのような需要がありそうか？～スクレイピングの方法の棲み分け～

X（旧Twitter）やProgakuという有志の学習コミュニティで度々お世話になっている現役の方の話を総合すると所感としては以下の通りです。

・概ね、①beautifulsoup4 か、②Selenium か、⑤requestsが多い？
・静的なページならば、requests、後は構造に応じて　Selenium　⇒　beautifulsoup4 利用
・分野によっては③Scrapyの人も少なくなさそう（以下の記事参照）

https://qiita.com/Octoparse_Japan/items/a104a63fb5723e531363

<h2>余談　youtubeとかのオススメ機能は機械学習 ≠ スクレイピングの応用

Progakuという有志の学習コミ二ティである方に教えてもらったところによると、
<h3>YouTubeは視聴履歴や検索履歴から直接取った履歴を機械学習されたモデルに入れて次のオススメ動画を割り出している可能性が高い（(´д｀)あゝ機械学習…）

そうです。また、スクレイピングやクローリングは実装面でも取得面でもコストがかかるので、直接取れるのであれば使わないに越したことはないらしく、Webブラウザでのパーソナライズ（※）された広告が表示されるようになるのはサードパーティクッキー（※）からの取得だそうです。（※なおサードパーティクッキーはまもなく廃止されるため、動きの早いところは続々と代替措置をとっているらしいです。）

※たまたま機械学習学習も最近始めました。とりま、回帰問題（データのだいたいの相関を表す関数の推定）からやってます。(なお、自分が大学で学んだものの１つの「フーリエ級数の収束性」に関する論文が需要ありそうなので、付録的にダウンロードできるようにしてあります。社会人後これまであまり需要がなかったのですが、皆さんで成仏させてやってください。)

https://qiita.com/thinking-weed/items/77d0b8aad001f3eb7730

<h2>個人的に謎だった単語リスト

（※１）（Pythonにおける）仮想環境：（用途に応じた）実行環境を提供する機能。必要に応じて切り替えて使用できる。

（※２）ディストリビューション：Python本体に加えて様々なモジュールやツール類をまとめた配布形態

（※３）Anaconda：アナコンダ、Python本体に加えてデータサイエンスに有益な様々なパッケージが追加されたディストリビューション

（※４）パーソナライズ：企業側がそれぞれのユーザーの属性、趣味嗜好、行動データ履歴といったデータにあわせて情報提供すること　（例　各ユーザーに合うような広告が出てくる）

（※５）サードパーティクッキー：訪れたサイト以外のドメインから発行されるクッキー。もうすぐ廃止されるらしいので代替策の検討が必要。参考資料　https://infinity-agent.co.jp/lab/thirdpartycookie_2024/

（※６）interactive：「相互の」「双方向の」を意味する英単語。このモード（対話モード）にすると、1行ずつプログラムを入力していくことになります。なお、打ち間違いをした場合、そこで一旦処理が止まる？ため再度打ち直すと、またそこから「ターミナルを開いている以上は」そこから処理が続きます。

（※７）SPA：（Single Page Applicaitonの略）単一の html ファイル上で javascript を使って画面遷移することなくユーザの操作に応じて動的に変化する Web アプリケーション (Web サイト) 。