自分のやったこと帳

自分でやってみたことをまとめていきます。

TEDの英文を解析してみた -スクレイビング編-

きっかけ

英語ペラペラになりたい。やっぱボキャブラリーは基礎だよね、と本屋に行っても単語帳はTOEIC対策用ばかり。何かもっと生きた英語単語を学ぶ方法はないだろうか、なんて思ってました。

やりたいこと

そうだ、TEDがあるやん。TEDとは学術、芸術、ビジネスなど多岐に渡る分野についてプレゼンターが自身の体験談などを紹介する講演会のことで、web上のその様子が字幕付き動画で公開されています。

www.ted.com

そして、各プレゼンページには文字起こしテキストが掲載されています。f:id:ki11111:20171227160514p:plain

そこで、TEDに掲載されている全プレゼン2,664講演(12/23時点)のスクリプトを取得し、出てくる単語を頻出順に並べる事で英語でペラペラプレゼンをするのに本当に必要な英単語を明らかにしたい!、と思い立ちました。

やったこと

思い立ったは良いですが、私は普通のサラリーマンでプログラマーでも何でもないので色々あさって勉強し、下記のように分けて実行することにしました。

1. 各ページのURLを取得する

2. 各ページにアクセスし、スクリプトを取得

3. 取得したスクリプトを単語毎に分解し、出てくる回数をカウント

以下、ソースコードを掲載します。プロの方から見たらツッコミどころ満載かと思いますが、あくまで主旨は英語の方なのでご容赦ください。

 

1. 各ページのURLを取得する

まず、動画一覧ページにアクセスして各プレゼンページへのリンクを取得します。f:id:ki11111:20171228135001p:plain  urlopenでページデータを取得し、各プレゼンのイメージ画像とタイトルにリンクが埋め込まれているaタグのhref要素をBeautifulsoupを使って抜き出した後にcsv形式でファイルに書き込んでいく。

 

gist49721897ce827eaa0b7dd7cc2acf047c

これで下記のように系2,664件のプレゼンへのリンクが取得できました。

f:id:ki11111:20171228140044p:plain

参考ページ :

qiita.com

qiita.com

2. 各ページにアクセスし、スクリプトを取得

取得したリンクを基に各プレゼンページの文字起こしテキストを取得していく。ここで面倒なのが各プレゼンページはJavascriptで読み込まれてるため、先ほどのようにurlopenでページデータを取得しても文字起こしテキスト部分が読み込まれていない状態のhtmlしか取得できない。そこで、seleniumでブラウザからリンクを開き、javascriptの反映が完了した後に文字起こしテキストを取得する必要がある。

 

gistecd84e62085ced19c24a3b560e8be532

ちなみに実行環境はmacbook proですが完了までにほぼ8時間かかりました。。。

f:id:ki11111:20171228141848p:plainf:id:ki11111:20171228141850p:plain

並列にプログラムを走らせたりすれば早く終わるのでしょうが、なんか芸がないのでもっと賢い方法があればご教授頂きたいです。

参考ページ : 

uphy.hatenablog.com

qiita.com

次回、文字処理編に続く。