初めての3学年が揃う年、より学びのある研究室を目指して

明けましておめでとうございます。今年もよろしくおねがいします。

このブログでは昨年の振り返りと今年の目標についてのブログにしていきたいと思います。

昨年の振り返り

  • カテゴリー別ブログ投稿数
  • 全体ブログ閲覧数ランキング

カテゴリー別ブログ投稿数

合計33本でした!

後期から始めたゼミの振り返りはとても読みごたえのあるブログになっています。お互いが振り返ることで、別の視点でも考えることができ、実際どのように自分のものにしていくか、今後どのようにしていくかが述べられていていました。研究室の活動を残しつつ、高校生にも大学の活動について知っていただけるように続けていきたいと思います!


全体ブログ閲覧数ランキング

3位 PythonでWebスクレイピング

magnetが書いたPythonでスクレイピングを実際に行ったブログが第3位でした!

授業の振り返りで行った内容をブログにしました。実際のPythonのコードも公開しています!コメントも丁寧にあるのが印象的でした。スクレイピングは便利な半面、使い方を間違えるとサイトに負荷をかけるものなので注意も必要ですね!


2位 話題の「Midjourney」を使ってみました!

AIを使った画像生成ツールのブログが第2位でした!

大学の授業でAIについて学習したのをきっかけに、AIが活用されているツールを紹介したブログになります。キーワードをもとにAIが自動で画像を生成するツールで、とても話題になりました!現在ではたくさんのツールが出てきました。SNSでも手軽にAIの画像生成が使われていて、私達の生活の周りにAIが近づいているように感じます。

教材としても使いやすいものになるので、高校の情報や技術科の教材としての活用も近い未来に行われるかもしれないですね


1位 LINEのAPIを使いこなそう!

Pythonで行うLINEAPIの紹介を行ったブログが第1位でした!

Pythonの学習で最初に何をしたらいいのかわからない方にとてもおすすめなツールです。とても簡単に実装をすることができます。

最近では、Youtubeでも解説している動画もたくさんあるので動画を見ながら学習を行うこともアリです!

来年度の目標

昨年度の上半期は授業の振り返りを行ったブログが多く、下半期はゼミの振り返りを行ったブログが投稿されました。現在のゼミのメンバーは7人もいるにも関わらず、下半期はかなりサボってしまいました。反省の限りです。上級生としてもっとできたことがあったのではないかと思ってしまいます。来年度もこのような事態にならないように、原因の分析と対策を行っていきたいです。

来年度の目標

  • 投稿本数100本以上
  • 全員が投稿できるような雰囲気づくり
  • 後輩への引き継ぎ

これらを目標に一年間行っていきたいと思います!

また、より多くの方に知っていただけるようにWordPressの理解を深めていくことも必要になっていくと思います。学び続けることを忘れず、前進し続けたいと思います!

今年も小倉研究室をよろしくお願いします。

PythonでWebスクレイピング(後編)

おしながき

  • 今回やりたいこと
  • 作る順番
    1. ライブラリのインストール
    2. コーディング
    3. Pandasを使って、CSV形式での保存
  • まとめ

今回やりたいこと

今回やりたいこととしては、

学校情報サイトから、「学校名」「生徒数」「住所」をスクレピングしていきたいとおもいます。そして、最後にはPadansを使って、CSV形式で保存するところまでやっていきたいと思います。

順序は

  • ライブラリのインストール
  • コーディング
  • Pandasを使って、CSV形式での保存

大まかに分けてこの3つになります。少し長くなってしまうかもしれませんが、ゆっくりやっていきましょう!

作る順番

1.ライブラリのインストール

今回使用するライブラリは「requests」「Beautifulsoup 」「pandas」「time」の4つです。webスクレイピングというと「selenium」もBeautifulsoup と同様に人気で使われていますが、今回は使用しないです。

インストールを行っていない方は

pip install requets
pip install pandas
pip install Beautifulsoup

をコマンドプロンプトでやっていただければインストールをできます。

2.コーディング

下のものが本編になります

#今回使うライブラリ
import time 
import requests
from bs4 import BeautifulSoup
import pandas

#スクレイピングをするサイト
#URLは今回は伏せておきます
url='@@@@@@@@@@@@@@@@@@@@@@@@@@@'

#requestsを使って、URL先の情報を取得
res=requests.get(url)
soup=BeautifulSoup(res.text,'html.parser')
school_list=soup.find_all('li',attrs={'class':'school_list_city'})


for details in school_list :
    school_details={}
    sdd=details.find('div',attrs={'class':'school_detail_data'})
    school_name=sdd.find('p',attrs={'class':'school_name'}).find('span').text
    shcool_item=sdd.find('p',attrs={'class':'item'})
    total_students=shcool_item.find('span',attrs={'class':'border_underline'}).text
    ads=sdd.find('p',attrs={'class':'item position'})
    ad=ads.find('span',attrs={'class':'small'}).text

    school_details['学校名']=school_name
    school_details['生徒数']=total_students
    school_details['住所']=ad
    data.append(school_details)
    time.sleep(2)

コードがきれいに書けていないかもしれませんが、まだまだ勉強中の身なので、ご容赦していただければと思います

少し解説をさせていただくと

ところどころに「~.find(‘@@’),attrs={‘class’:’%%%’}」と言った記述がたくさんあると思います。これを抑えることができたら簡単なスクレイピングは可能かと思います。

これを日本語変換してみると「~の中の一番最初の@@タグのclassの%%%を指定します!」といった感じです。HTMLというデータはとても大きいものなので、一気に操作を行うのではなく、少しづつ絞っていくとやりやすいのではないかと思います。

3.Pandasを使って、CSV形式での保存

スクレイピングをしたデータをpandasを使って、DataFrameに格納し、それをCSV形式で保存することは一見難しそうに見えますが、案外簡単です。

#pandasを使って、DataFrameに格納
df=pd.DataFrame(data)
#CSV形式で保存
df.to_csv('学校の情報.csv',index=False,encoding='utf_8_sig')

この2行だけで終わりです。少し解説をさせていただくと、「index=False」というのは、DataFrameに格納した際にインデックス番号が同時に付与されるのですが、「CSV形式で保存するときにそのインデックス番号はいらないよー」ということです。

まとめ

かなり駆け足でBeautifulsoup を使ったWebスクレピングを紹介していきました。高校情報Ⅱの教員研修資料にも今回のBeautifulsoup を使ったWebスクレイピングは紹介され、今後必要なスキルの一つになるのではないかと思います。

また、プログラミングは様々な勉強ツールがあります。今回は私が勉強するときに使用したYouTubeの動画のURLを載せておきたいと思います。勉強するときの助けになればいいなと思います。

PythonでWebスクレイピング(前編)

おしながき

  1. Webスクレイピングとは?
  2. Webスクレイピングを行うときに注意すべきこと
  3. まとめ

1.Webスクレイピングとは?

Webスクレイピングの定義を調べてみると、、、

Webスクレイピング(Webデータ抽出、スクリーンスクレイピング、Webデータ収集とも呼ばれる)は、Webサイトから大量の情報を自動的に抽出するコンピュータソフトウェア技術のことです。データの多くはHTML形式の非構造化データで、これをスプレッドシートやデータベースの構造化データに変換することで、さまざまなアプリケーションに利用することができます。Webスクレイピングの主な使用例としては、価格監視、価格情報、ニュース監視、リードジェネレーション、市場調査などが挙げられます
引用:https://www.octoparse.jp/blog/web-scraping/#div1

といったように、インターネット上の情報をプログラムを使って、大量に抽出することを指します。抽出されたデータは「.xlsl」や「.csv」の形式で出力され、市場調査やデータ分析等に使われます。今回行うことは、Pyhtonでwebスクレイピングを行いますが、最近では、ノーコードでもWebスクレイピングを行うことができます。一例ではありますが「Octoparse」といといったサービスもあります。興味がある方はぜひともチェックしていただきたいと思います。

2.Webスクレイピングを行うときに注意すべきこと

 Webスクレイピングはとても便利な反面、注意すべき点ももちろんあります。それは

  • サーバへの負荷をかけすぎない
  • そのサイトがスクレイピングをしても問題ないか

これらのことを最低限注意しなければなりません。

 1つ目のサーバへの負荷については「間隔を開けてアクセスする」ことが一番手っ取り早いと思います。Pythonであれば

import time
for i in range(5):
    print(i)
    time.sleep(1.0)

のように、1秒ごとの間隔をあける工夫をすることで、負荷を減らすことができます。難しいことではないと思うので、思いやりの心を持ってやっていただけたらと思います。

 2つ目の「そのサイトがスクレイピングをしても、問題がないか」についてはしっかりと確認する必要があります。今回は有名なスクレイピングを行ってはいけない代表的なサイトを紹介したいと思います。

  • Amazon
  • Rakuten(楽天)
  • Twitter、Instagram、FacebookなどのSNS

これらのサイトの他にもスクレイピングを行ってはいけないサイトはたくさんあります。なので、行う前に対象のサイトの「利用規約」をしっかりと確認することが大切です。これら無視した場合「偽計業務妨害罪」に問われる可能性があります。更に細かいことは下のリンクに書いてあったので、気になる方はスクレイピングを行う前に確認してもらうといいと思います。

3.まとめ

Webスクレイピングは大変便利な半面、怖い観点もあります。なので、サイトに迷惑をかけない範囲で行うことが重要なのかと思います。後編では実際にどうやってスクレイピングを行うのかを解説をしたいと思います。