専門ゼミ(八十住)

目次 

【スクレイピングについて】 

スクレイピングとは、Webサイトを巡回して情報を取得し、その情報を加工して新たな情報を生成するためのプログラムのことである。

使用例としては、競合他社のWebサイトから商品のスペックや価格などを収集して自社製品との比較表を作成するなどがある。

メリットとしては、手動で情報収集するよりも早く正確に大量の情報収集が可能、APIでは取得できない情報も収集可能、新たなサービスの開発に利用できるなどが挙げられる。

デメリットとしては、急に情報収集ができなくなる場合があり、その際の対処に手間がかかる、収集先のWebサイトからスクレイピングを拒否される場合がある、法律に触れてしまう場合があるなどが挙げられる。

今回のゼミではBeautiful Soup4を用いて、適当なサイトのタイトルとURLで取得した。

【実行環境】 

・python 64bit版
・python3.10.8

【プログラムコード】 

プログラムコードは以下の通りである。 5行目のURLを変えると、そのサイトの情報を取得できる。

2.jpg

【実行結果】 

結果は以下の通りである。

1.jpg

pythonのpip install[共通] 

vscodeなどを使って3D_Graphのフォルダに入っているServer.pyを起動する
そうすると足りていないpipを要求されるのでその都度

pip install 〇〇

と入力しpipを入れる

同じことをmatomeall.pyも行う

インストールするモジュールの中にはただpip install 〇〇とやるだけではインストールできないものもある

例えば、chromedriverがそうで
https://qiita.com/hanzawak/items/2ab4d2a333d6be6ac760
を参考にするとできる

また、MeCabもそうで、pipとは別に本体をダウンロード&インストールしないといけない
https://qiita.com/menon/items/f041b7c46543f38f78f7
を参考にしてインストールする
※上記リンク先のanacondaのインストールはスキップ ※python3.8の場合、上記リンクのpip install mecab-python-windowsではなくpip install mecabだとできる

[失敗備忘録]
requirements.txtでpipを一括でインストールする際anaconda環境で作成するとanaconda環境じゃない人は一括でインストールできなかった

【MeCabの辞書】 [共通] 

MeCabは形態素分析を行うモジュールで、その形態素分析を行うときに使う辞書がある
デフォルトの辞書では例えば「進撃の巨人」という言葉を見ても「進撃 の 巨人」という分析結果になってしまう。
これはデフォルトの辞書には進撃の巨人という名詞が存在していないから起こってしまう
そこで、NEologdという新しい辞書を追加する

Neologdの追加 [共通] 

Neologdの追加の仕方は、
https://qiita.com/zincjp/items/c61c441426b9482b5a48 を参考にする

基本このwikiを見て進めれば大丈夫で詳しくは上記URL参照

googledriveからダウンロードしたneologd.zipの中身のmecab-ipadic-neologdを使えば,辞書ファイルのコンパイルまで作業をスキップできる

#ref(): File not found: "2.PNG" at page "10月20日 スクレイピング"

neologd.zipの中身のmecab-ipadic-neologdをdicのフォルダにコピーする
ipadicの中身を全部コピーしたフォルダipadic-UTF8と中身のないフォルダneologdを作成する

管理者権限でコマンドプロンプトを起動し,ipadic-UTF8のディレクトリに移動し,ipadicの中身をUTF8に変換する

cd "c:\Program Files\MeCab\dic\ipadic-UTF8"
mecab-dict-index -f utf-8 -t utf-8

#ref(): File not found: "3.PNG" at page "10月20日 スクレイピング"

Neologdの辞書をコンパイルする

cd "c:\Program Files\MeCab\dic\mecab-ipadic-neologd\seed"
mecab-dict-index -d "c:\Program Files\MeCab\dic\ipadic-UTF8" -u NEologd.20200820-u.dic -f utf-8 -t utf-8 mecab-user-dict-seed.20200820.csv

#ref(): File not found: "4.PNG" at page "10月20日 スクレイピング"

mecab-ipadic-neologdのフォルダに作られたNEologd.20200820-u.dicを最初に作った空のneologdのフォルダに移動させる

コマンドプロンプトの作業は終わり

Program Files>MeCab>etcの中にあるmecabrcをメモ帳で開き,userdicの一行を追加する

userdic = C:\Program Files\MeCab\dic\neologd\NEologd.20200820-u.dic

#ref(): File not found: "5.PNG" at page "10月20日 スクレイピング"

保存しようとすると権限がないといわれるので一旦どこか適当な場所に保存して拡張子.txtを削除してから元々あったmecabrcと入れ替える

これで形態素分析ができるようになる

一応ちゃんとneologdが導入されているか確かめるテストプログラムを添付しておく
以下のプログラムで画像のような結果が出れば成功.
進撃の巨人が名詞として認識されていなかったら導入できていない

#ref(): File not found: "teest.py" at page "10月20日 スクレイピング"

#ref(): File not found: "6.PNG" at page "10月20日 スクレイピング"

【コードの個人で書き換える箇所】 [共通] 

ディレクトリの書き換え [山元] 

matomeall.pyとserver.pyに書いてあるmiserables.jsonなどのpathが平松のPCの絶対pathになっているので直す必要がある
※普通にアドレスのコピーをするとバックスラッシュになるので/に直す

#ref(): File not found: "7.PNG" at page "10月20日 スクレイピング"

TwitterAPIのKey [平松] 

TwitterAPIのアクセスキーなどが現状のままだと平松のになっているので各自で取得して変更する必要がある。~TwitterAPIに関しては参考資料の欄に書いてある

#ref(): File not found: "チャ.PNG" at page "10月20日 スクレイピング"

【実行】 [共通] 

山元の実行の仕方と結果[山元] 

server.pyを起動したあと,system.htmlを起動して好きなキーワード二つ入れて実行を押せば3Dのグラフが作成される

※Windowsでやる場合おそらくssl証明書関連のErrorが出ると思われるので下記のMaxRetryErrorの対処法を参考にすると直せる

ノートパソコンなどで実行するとスクレイピングと形態素分析に5分~10分ほど時間がかかってしまうと思われる

また、python 32bit版を使っているとスクレイピングしてきたデータ量が32bitで足りなくなるので64bit版をつかう必要がある。windowsが32bit版の場合は恐らくどうしようもない

富山県立大学と高齢者のキーワードで作った例

#ref(): File not found: "キャャ.PNG" at page "10月20日 スクレイピング"

平松の実行の仕方と結果[平松] 

Server.pyを実行するとhtmlが自動的に表示される※現在のver2.0では二回開かれてしまう。
開かれたhtmlに2つキーワードを入力することで共起ネットワークが作成される

#ref(): File not found: "ャ.PNG" at page "10月20日 スクレイピング"

#ref(): File not found: "キ.PNG" at page "10月20日 スクレイピング"

【エラーの対処】[共通] 

・MaxRetryError: HTTPSConnectionPool
下記のページのopensslをインストールして環境変数を通すところまでやれば直る
https://www.atmarkit.co.jp/ait/articles/1601/29/news043.html

・NetworkXError
matomeall.pyのranking関数の

class_group = driver.find_elements_by_class_name('rc')

のrcの部分がgoogleの気まぐれで変わることがあるのでchromeを開いてhtmlのタグを画像のように調べる

#ref(): File not found: "6.png" at page "10月20日 スクレイピング"

【参考資料】 

スクレイピングとは何?概要やメリット・デメリットを分かりやすく解説!

https://cyberwave.jp/business-blog/library/%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0-%E6%A6%82%E8%A6%81-%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88-%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS