教育支援・教材提示
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[由利恵]]
#清水さん,滝沢さん,中市さん
*目次 [#q6f8e430]
#CONTENTS
*スクレイピング用準備 [#o2ab7bca]
**Mecab [#t59de1a2]
必要なモジュールをインストールする必要がある~
・mecab~
言語を分析するモジュール~
・unidic-lite~
日本語の辞書~
・mecab(exe)~
3つ目以外は~
pip install mecab
と入れる~
mecab(exe)は[[Mecabダウンロード:https://github.com/ikeg...
ダウンロードしたものは~
C:\Program Files
に収納されているはず~
また、新規でMecab.exeがあるパスを追加する。~
C:\Program Files\MeCab\bin\
#ref(n21.png,,30%)
**NEologd [#d5eee5c5]
Mecabには古い辞書しか入っていないため、NEologdというもの...
#ref(neologd.zip)
↑をダウンロードして解凍する
neologdの中身のmecab-ipadic-neologdを~
C:\Program Files\MeCab\dic~
にコピーをする~
・ipadic(もとからある)
・mecab-ipadic-neologd(コピーしてきた)
もののほかに~
①ipadic-UTF-8~
ipadicの中身をすべてコピーした物~
②neologd~
中身は空~
のフォルダを作成する~
**実際に行ってみる [#hfce4950]
コマンドプロンプトで~
mecab
と入力→対話型シェルに入る~
形態素解析
と入力→Enterを押すと下記の画像のようになる~
#ref(n26.png,,70%)
***文字化けした場合 [#d1c7c720]
chcp 65001
をコマンドプロンプトに入力した後実行してみる~
*Jupyter [#gd52a58c]
**pythonからJupyterインストール [#z26b958f]
コマンドプロントから~
①pythonのバージョン確認~
python -V
②Jupyterをインストール~
pip install jupyter environment_kernels~
③新規でpip.exeがあるパスを追加する(もう追加されていたら...
pip.exeのあるフォルダを探す~
C:\Users\tc22m064\AppData\Local\Programs\Python\Python39...
#ref(n21.png,,30%)~
④Jupyterを起動~
jupyter-notebook
#ref(n22.png,,30%)~
**実際に行ってみる [#wef83fdc]
pythonでmecabを試す~
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("東京特許許可局"))
上の4行を先ほど立ち上げたjupyterで実行する~
#ref(n23.png,,30%)
#ref(n24.png,,30%)
#ref(n25.png,,40%)
*教育支援・教材提示 [#kcf669ec]
**初めに[#h8e98998]
#ref(軽量化三.7z)
ファイルを開き、app.pyを実行させる~
その際に必要となるモジュールを順次入れる~
もし、[[MeCab:https://github.com/ikegami-yukino/mecab/rel...
今回入れたのは
mecab-0.996-64.exe
を入れ、もう1度app.pyを実行させる~
#ref(n1.png,,50%)
が出てきたら
#ref(n2.png,,50%)
をコピペしてGoogleなどに貼り付けて検索をかける~
**新規登録・ログイン [#r89f7c64]
まず、新規登録を行った
#ref(n3.png,,50%)
今回は~
新しいユーザー名:123~
新しいパスワード:1234~
名前:123~
として登録を行った~
登録されたユーザーは軽量化三フォルダの中のusers.csvの中に...
#ref(n6.png,,50%)
**ログイン後[#xb8acee7]
ログイン後以下のような画面に切り替わる~
#ref(n4.png,,30%)
#ref(n5.png,,30%)
**週間勉強予定時間 [#k0987feb]
画像のように曜日・時間の部分をクリックすると緑に変わる~
緑に変わったら右側にある「各曜日の合計時間」にも連携され...
合計時間を保存を押す~
#ref(n12.png,,30%)
下の画像のようなものが表示されたら更新されたことになる~
「合計時間を保存」を1回押して表示されなければもう1度押し...
#ref(n13.png,,50%)
study.csvに保存されている~
#ref(n7.png,,50%)
**カレンダー [#n4cd57e6]
以下の事を行う~
①予定追加(本日よりも後ろの日付)~
②名前変更(しなくてもよい)~
③書き込み~
#ref(n8.png,,50%)
③を行ったら軽量化三のuserdataフォルダの中の123.csvに保存...
Titleが文字化けしちゃった場合はメモ帳で開くと見れます
#ref(n9.png)
**理解度チェック[#uaa8eeae]
・小学生理解度チェックへ~
・中学生理解度チェックへ~
・高校生理解度チェックへ~
のどれかを選択~
今回は小学生理解度チェックを選択した。
#ref(n10.png,,30%)
各科目の単元ごとに分かれている。
・未~
・落単~
・C~
・B~
・A~
・S~
の6種類と、□(チェックボックス)がある~
テスト範囲の単元の場合は□(チェックボックス)をチェックする
小学生算数で実践してみる
#ref(n11.png,,30%)
画面下部にある「更新する」を押すと一旦ログアウトになる~
subjectフォルダの中にある
**スケジュール日程作成 [#d94856c8]
カレンダーに書き込んだスケジュールの日程までに日割りで行...
#ref(n14.png,,30%)
単元を押すと教材ページに飛ぶようになっている~
#ref(n15.png,,40%)
**系統図グラフ作成 [#g7eb1294]
#ref(n16.png,,30%)
プルダウンで理解度チェックを行ったものを選択する~
#ref(n17.png,,40%)
・★~
クリティカルパス~
(プロジェクトを進めていくうえでスケジュールに影響が...
・大きい●~
テスト範囲~
・●~
単元~
の3種類がある~
#ref(n18.png,,30%)
★や●などの単元を押すと~
#ref(n15.png,,40%)
教材ページに飛べる~
**教材ページ [#k0383722]
#ref(n19.png,,30%)~
#ref(n20.png,,50%)
①評価スコア~
②レビュー本文~
③評価ボタン~
を行うことにより信頼性スコアが変わる~
**プログラム [#l866fe49]
import time
from pandas.core.frame import DataFrame ...
from selenium import webdriver
import chromedriver_binary
from googleapiclient.discovery import build
import pandas as pd
import os
# 作成したcsvファイルを入れる用のディレクトリの作成
path = './Kyouzai'
os.makedirs(path, exist_ok=True)
# ChromeDriverのパスを新しいものに更新
chromedriver_path = 'C:/Users/tc22m064/Desktop/引継ぎ/(...
driver = webdriver.Chrome(executable_path=chromedriver_pa...
# utf-8-sigエンコーディングを指定してCSVファイルを読み込む
sub_title = pd.read_csv("KeyWord.csv", encoding="utf-8-si...
# 1列目のものをsub_listに追加する(授業タイトル)
sub_list = sub_title.iloc[:, 0]
url_num = 10 # 一つの単語につき何個のwebページを出すか
# HPのタイトルとURL用のリストを15個作成する
hp_title = [[] for _ in range(len(sub_list))]
hp_url = [[] for _ in range(len(sub_list))]
####################### webページを検索 #################...
for j in range(len(sub_list)):
driver = webdriver.Chrome() #Chrome...
driver.get("https://www.google.com/") #Chrome...
search_box = driver.find_element_by_name('q') # HT...
search_box.send_keys(str(sub_list[j])+" "+"解説") ...
#print(sub_list[j])
search_box.submit() # 検...
time.sleep(10) # 5...
def ranking(driver):
i = 1 #ループ番号,ページ番号を定義する
i_max = 3 #何ページまで検索するかを定義
title_list = [] #タイトル用のリストを作成
link_list = [] #URL用のリストを作成
title_kouho = []
link_kouho = []
#現在のページが指定した最大分析ページを超えるまで...
while i <= i_max:
#タイトルとリンクはclass="yuRUbf"に格納されて...
class_group = driver.find_elements_by_class_n...
print('yuRUbf')
# class="yuRUbf" からタイトルとリンクを抽出し...
for elem in class_group:
#タイトルは class="LC201b" に格納されている
#タイトルは class = h3 に格納されている
title = elem.find_element_by_tag_name('h3...
#リンクは aタグの href に格納されている
link = elem.find_element_by_tag_name('a')...
if '動画' not in title and '画像' not in ...
# link に通販サイトのやつらを入らない...
if 'youtube' not in link and 'yodobas...
if title != '':
#print(link)
title_list.append(title)
link_list.append(link)
#「次へ」のボタンはひとつしかないがあえてele...
if driver.find_elements_by_id("pnnext") == []:
i = i_max + 1 # 次のページがなければ,最...
else:
# 次ページのURLはid="pnnext"のhref属性
next_page = driver.find_element_by_id("pn...
# 次ページへ遷移する
driver.get(next_page)
i = i + 1 # ページを進む
time.sleep(3) # 3秒休憩, これを指定の最...
return title_list, link_list
#上記で定義したranking()関数を実行する
title, link = ranking(driver)
#print(title)
print(len(title))
for i in range(min(url_num, len(title))):
hp_title[j].append(title[i])
hp_url[j].append(link[i])
#print(hp_url[j])
driver.quit()
#print(hp_title[j])
#cledibility_score
for j in range(len(sub_list)):
df = pd.DataFrame({'HPtitle':hp_title[j],'HPurl':hp_u...
df.to_csv(f'./Kyouzai/website_{j}.csv',index=None,enc...
が実行で通るように編集中
終了行:
[[由利恵]]
#清水さん,滝沢さん,中市さん
*目次 [#q6f8e430]
#CONTENTS
*スクレイピング用準備 [#o2ab7bca]
**Mecab [#t59de1a2]
必要なモジュールをインストールする必要がある~
・mecab~
言語を分析するモジュール~
・unidic-lite~
日本語の辞書~
・mecab(exe)~
3つ目以外は~
pip install mecab
と入れる~
mecab(exe)は[[Mecabダウンロード:https://github.com/ikeg...
ダウンロードしたものは~
C:\Program Files
に収納されているはず~
また、新規でMecab.exeがあるパスを追加する。~
C:\Program Files\MeCab\bin\
#ref(n21.png,,30%)
**NEologd [#d5eee5c5]
Mecabには古い辞書しか入っていないため、NEologdというもの...
#ref(neologd.zip)
↑をダウンロードして解凍する
neologdの中身のmecab-ipadic-neologdを~
C:\Program Files\MeCab\dic~
にコピーをする~
・ipadic(もとからある)
・mecab-ipadic-neologd(コピーしてきた)
もののほかに~
①ipadic-UTF-8~
ipadicの中身をすべてコピーした物~
②neologd~
中身は空~
のフォルダを作成する~
**実際に行ってみる [#hfce4950]
コマンドプロンプトで~
mecab
と入力→対話型シェルに入る~
形態素解析
と入力→Enterを押すと下記の画像のようになる~
#ref(n26.png,,70%)
***文字化けした場合 [#d1c7c720]
chcp 65001
をコマンドプロンプトに入力した後実行してみる~
*Jupyter [#gd52a58c]
**pythonからJupyterインストール [#z26b958f]
コマンドプロントから~
①pythonのバージョン確認~
python -V
②Jupyterをインストール~
pip install jupyter environment_kernels~
③新規でpip.exeがあるパスを追加する(もう追加されていたら...
pip.exeのあるフォルダを探す~
C:\Users\tc22m064\AppData\Local\Programs\Python\Python39...
#ref(n21.png,,30%)~
④Jupyterを起動~
jupyter-notebook
#ref(n22.png,,30%)~
**実際に行ってみる [#wef83fdc]
pythonでmecabを試す~
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("東京特許許可局"))
上の4行を先ほど立ち上げたjupyterで実行する~
#ref(n23.png,,30%)
#ref(n24.png,,30%)
#ref(n25.png,,40%)
*教育支援・教材提示 [#kcf669ec]
**初めに[#h8e98998]
#ref(軽量化三.7z)
ファイルを開き、app.pyを実行させる~
その際に必要となるモジュールを順次入れる~
もし、[[MeCab:https://github.com/ikegami-yukino/mecab/rel...
今回入れたのは
mecab-0.996-64.exe
を入れ、もう1度app.pyを実行させる~
#ref(n1.png,,50%)
が出てきたら
#ref(n2.png,,50%)
をコピペしてGoogleなどに貼り付けて検索をかける~
**新規登録・ログイン [#r89f7c64]
まず、新規登録を行った
#ref(n3.png,,50%)
今回は~
新しいユーザー名:123~
新しいパスワード:1234~
名前:123~
として登録を行った~
登録されたユーザーは軽量化三フォルダの中のusers.csvの中に...
#ref(n6.png,,50%)
**ログイン後[#xb8acee7]
ログイン後以下のような画面に切り替わる~
#ref(n4.png,,30%)
#ref(n5.png,,30%)
**週間勉強予定時間 [#k0987feb]
画像のように曜日・時間の部分をクリックすると緑に変わる~
緑に変わったら右側にある「各曜日の合計時間」にも連携され...
合計時間を保存を押す~
#ref(n12.png,,30%)
下の画像のようなものが表示されたら更新されたことになる~
「合計時間を保存」を1回押して表示されなければもう1度押し...
#ref(n13.png,,50%)
study.csvに保存されている~
#ref(n7.png,,50%)
**カレンダー [#n4cd57e6]
以下の事を行う~
①予定追加(本日よりも後ろの日付)~
②名前変更(しなくてもよい)~
③書き込み~
#ref(n8.png,,50%)
③を行ったら軽量化三のuserdataフォルダの中の123.csvに保存...
Titleが文字化けしちゃった場合はメモ帳で開くと見れます
#ref(n9.png)
**理解度チェック[#uaa8eeae]
・小学生理解度チェックへ~
・中学生理解度チェックへ~
・高校生理解度チェックへ~
のどれかを選択~
今回は小学生理解度チェックを選択した。
#ref(n10.png,,30%)
各科目の単元ごとに分かれている。
・未~
・落単~
・C~
・B~
・A~
・S~
の6種類と、□(チェックボックス)がある~
テスト範囲の単元の場合は□(チェックボックス)をチェックする
小学生算数で実践してみる
#ref(n11.png,,30%)
画面下部にある「更新する」を押すと一旦ログアウトになる~
subjectフォルダの中にある
**スケジュール日程作成 [#d94856c8]
カレンダーに書き込んだスケジュールの日程までに日割りで行...
#ref(n14.png,,30%)
単元を押すと教材ページに飛ぶようになっている~
#ref(n15.png,,40%)
**系統図グラフ作成 [#g7eb1294]
#ref(n16.png,,30%)
プルダウンで理解度チェックを行ったものを選択する~
#ref(n17.png,,40%)
・★~
クリティカルパス~
(プロジェクトを進めていくうえでスケジュールに影響が...
・大きい●~
テスト範囲~
・●~
単元~
の3種類がある~
#ref(n18.png,,30%)
★や●などの単元を押すと~
#ref(n15.png,,40%)
教材ページに飛べる~
**教材ページ [#k0383722]
#ref(n19.png,,30%)~
#ref(n20.png,,50%)
①評価スコア~
②レビュー本文~
③評価ボタン~
を行うことにより信頼性スコアが変わる~
**プログラム [#l866fe49]
import time
from pandas.core.frame import DataFrame ...
from selenium import webdriver
import chromedriver_binary
from googleapiclient.discovery import build
import pandas as pd
import os
# 作成したcsvファイルを入れる用のディレクトリの作成
path = './Kyouzai'
os.makedirs(path, exist_ok=True)
# ChromeDriverのパスを新しいものに更新
chromedriver_path = 'C:/Users/tc22m064/Desktop/引継ぎ/(...
driver = webdriver.Chrome(executable_path=chromedriver_pa...
# utf-8-sigエンコーディングを指定してCSVファイルを読み込む
sub_title = pd.read_csv("KeyWord.csv", encoding="utf-8-si...
# 1列目のものをsub_listに追加する(授業タイトル)
sub_list = sub_title.iloc[:, 0]
url_num = 10 # 一つの単語につき何個のwebページを出すか
# HPのタイトルとURL用のリストを15個作成する
hp_title = [[] for _ in range(len(sub_list))]
hp_url = [[] for _ in range(len(sub_list))]
####################### webページを検索 #################...
for j in range(len(sub_list)):
driver = webdriver.Chrome() #Chrome...
driver.get("https://www.google.com/") #Chrome...
search_box = driver.find_element_by_name('q') # HT...
search_box.send_keys(str(sub_list[j])+" "+"解説") ...
#print(sub_list[j])
search_box.submit() # 検...
time.sleep(10) # 5...
def ranking(driver):
i = 1 #ループ番号,ページ番号を定義する
i_max = 3 #何ページまで検索するかを定義
title_list = [] #タイトル用のリストを作成
link_list = [] #URL用のリストを作成
title_kouho = []
link_kouho = []
#現在のページが指定した最大分析ページを超えるまで...
while i <= i_max:
#タイトルとリンクはclass="yuRUbf"に格納されて...
class_group = driver.find_elements_by_class_n...
print('yuRUbf')
# class="yuRUbf" からタイトルとリンクを抽出し...
for elem in class_group:
#タイトルは class="LC201b" に格納されている
#タイトルは class = h3 に格納されている
title = elem.find_element_by_tag_name('h3...
#リンクは aタグの href に格納されている
link = elem.find_element_by_tag_name('a')...
if '動画' not in title and '画像' not in ...
# link に通販サイトのやつらを入らない...
if 'youtube' not in link and 'yodobas...
if title != '':
#print(link)
title_list.append(title)
link_list.append(link)
#「次へ」のボタンはひとつしかないがあえてele...
if driver.find_elements_by_id("pnnext") == []:
i = i_max + 1 # 次のページがなければ,最...
else:
# 次ページのURLはid="pnnext"のhref属性
next_page = driver.find_element_by_id("pn...
# 次ページへ遷移する
driver.get(next_page)
i = i + 1 # ページを進む
time.sleep(3) # 3秒休憩, これを指定の最...
return title_list, link_list
#上記で定義したranking()関数を実行する
title, link = ranking(driver)
#print(title)
print(len(title))
for i in range(min(url_num, len(title))):
hp_title[j].append(title[i])
hp_url[j].append(link[i])
#print(hp_url[j])
driver.quit()
#print(hp_title[j])
#cledibility_score
for j in range(len(sub_list)):
df = pd.DataFrame({'HPtitle':hp_title[j],'HPurl':hp_u...
df.to_csv(f'./Kyouzai/website_{j}.csv',index=None,enc...
が実行で通るように編集中
ページ名: