由利恵? #清水さん,滝沢さん,中市さん
必要なモジュールをインストールする必要がある
・mecab
言語を分析するモジュール
・unidic-lite
日本語の辞書
・mecab(exe)
3つ目以外は
pip install mecab
と入れる
mecab(exe)はMecabダウンロードのexeファイルをダウンロード
ダウンロードしたものは
C:\Program Files
に収納されているはず
また、新規でMecab.exeがあるパスを追加する。
C:\Program Files\MeCab\bin\
Mecabには古い辞書しか入っていないため、NEologdというものを入れる必要がある
#ref(): File not found: "NEologd.zip" at page "教育支援・教材提示"
↑をダウンロードして解凍する
neologdの中身のmecab-ipadic-neologdを
C:\Program Files\MeCab\dic~
にコピーをする
・ipadic(もとからある) ・mecab-ipadic-neologd(コピーしてきた)
もののほかに
①ipadic-UTF-8
ipadicの中身をすべてコピーした物
②neologd
中身は空
のフォルダを作成する
コマンドプロンプトで
mecab
と入力→対話型シェルに入る
形態素解析
と入力→Enterを押すと下記の画像のようになる
chcp 65001
をコマンドプロンプトに入力した後実行してみる
コマンドプロントから
①pythonのバージョン確認
python -V
②Jupyterをインストール
pip install jupyter environment_kernels~
③新規でpip.exeがあるパスを追加する(もう追加されていたら飛ばす)
pip.exeのあるフォルダを探す
C:\Users\tc22m064\AppData\Local\Programs\Python\Python39\Scripts\
④Jupyterを起動
jupyter-notebook
pythonでmecabを試す
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("東京特許許可局"))
上の4行を先ほど立ち上げたjupyterで実行する
ファイルを開き、app.pyを実行させる
その際に必要となるモジュールを順次入れる
もし、MeCabというものが入っていなければ、インストールさせる
今回入れたのは
mecab-0.996-64.exe
を入れ、もう1度app.pyを実行させる
が出てきたら
をコピペしてGoogleなどに貼り付けて検索をかける
まず、新規登録を行った
今回は
新しいユーザー名:123
新しいパスワード:1234
名前:123
として登録を行った
登録されたユーザーは軽量化三フォルダの中のusers.csvの中に記入されている
ログイン後以下のような画面に切り替わる
画像のように曜日・時間の部分をクリックすると緑に変わる
緑に変わったら右側にある「各曜日の合計時間」にも連携されている
合計時間を保存を押す
下の画像のようなものが表示されたら更新されたことになる
「合計時間を保存」を1回押して表示されなければもう1度押してください
study.csvに保存されている
以下の事を行う
①予定追加(本日よりも後ろの日付)
②名前変更(しなくてもよい)
③書き込み
③を行ったら軽量化三のuserdataフォルダの中の123.csvに保存されている
Titleが文字化けしちゃった場合はメモ帳で開くと見れます
・小学生理解度チェックへ
・中学生理解度チェックへ
・高校生理解度チェックへ
のどれかを選択
今回は小学生理解度チェックを選択した。
各科目の単元ごとに分かれている。
・未
・落単
・C
・B
・A
・S
の6種類と、□(チェックボックス)がある
テスト範囲の単元の場合は□(チェックボックス)をチェックする
小学生算数で実践してみる
画面下部にある「更新する」を押すと一旦ログアウトになる
subjectフォルダの中にある
カレンダーに書き込んだスケジュールの日程までに日割りで行う単元が記載されている
単元を押すと教材ページに飛ぶようになっている
プルダウンで理解度チェックを行ったものを選択する
・★
クリティカルパス
(プロジェクトを進めていくうえでスケジュールに影響が出る作業経路)
・大きい●
テスト範囲
・●
単元
の3種類がある
★や●などの単元を押すと
教材ページに飛べる
①評価スコア
②レビュー本文
③評価ボタン
を行うことにより信頼性スコアが変わる
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/引継ぎ/(中市さん)/課題①/スクレイピング/chromedriver.exe' driver = webdriver.Chrome(executable_path=chromedriver_path) # Chromeのパスを指定する
# utf-8-sigエンコーディングを指定してCSVファイルを読み込む sub_title = pd.read_csv("KeyWord.csv", encoding="utf-8-sig", header=None)
# 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') # HTML内で検索ボックス(name='q')を指定する
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 = []
#現在のページが指定した最大分析ページを超えるまでループする(j_max)
while i <= i_max:
#タイトルとリンクはclass="yuRUbf"に格納されている
class_group = driver.find_elements_by_class_name('yuRUbf')
print('yuRUbf')
# class="yuRUbf" からタイトルとリンクを抽出し,リストに追加するループ
for elem in class_group:
#タイトルは class="LC201b" に格納されている
#タイトルは class = h3 に格納されている
title = elem.find_element_by_tag_name('h3').text
#リンクは aタグの href に格納されている
link = elem.find_element_by_tag_name('a').get_attribute('href')
if '動画' not in title and '画像' not in title and '説明' not in title:
# link に通販サイトのやつらを入らないようにする(アマゾンとか)← 今後追加していく
if 'youtube' not in link and 'yodobashi' not in link and 'amazon' not in link:
if title != '':
#print(link)
title_list.append(title)
link_list.append(link)
#「次へ」のボタンはひとつしかないがあえてelementsで複数検索. 空のリストであれば最終ページという意味.
if driver.find_elements_by_id("pnnext") == []:
i = i_max + 1 # 次のページがなければ,最大ページ数を強制的に越してループ終了
else:
# 次ページのURLはid="pnnext"のhref属性
next_page = driver.find_element_by_id("pnnext").get_attribute("href")
# 次ページへ遷移する
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_url[j]})
df.to_csv(f'./Kyouzai/website_{j}.csv',index=None,encoding='utf-8-sig')
が実行で通るように編集中