TECH MEDIA

テックメディア


プログラミング言語
ブログ

HTML要素のスクレイピングをJavaScriptのES6でやってみる

JavaScript
目次
  1. 01|色々な情報を取得してみる
  2. 02|まとめ

こんにちは!

最近フロントテストの自動化のためにSeleniumを業務でよく使うため、今回はまず HTMLの要素 をJavaScriptのES6でスクレイピングしようと思います。

参考サイトはw2のECプラットフォームである「Value 5」のEC ショップ画面です。

1. 色々な情報を取得してみる

まずはChromeで「Value 5」のテスト用ECショップ画面を開いてから、「Command + Shift + i」でデバッガーのコンソールを開きます。

単体取得

基本的にIDで取得する場合は、getByIdを使いますが、ES6から使えるquerySelectorを使うと、単体取得なら全てこちらで完結するのでとても楽です。

引数はCSSセレクターで指定できるため、CSSさえわかっていれば使うことができます。

1.画面のヘッダーにあるログインの文字列を取得してみます。「#HeadMembers」の中の「a」タグ内にログインの文字列があるようなので、CSSセレクタは「HeadMembers>a」と記述します。

では、次に「a」タグのテキストを取得したいため、今回はinnerTextで取得します。

こちらも取得できました。とても簡単ですね!

複数取得

では、次に querySelectorAllを使ってみましょう。

今回は複数のエレメントが取得できる querySelectorAll を使います。こちらもCSSセレクタで指定します。

1.まずはページ上記にあるナビゲーションメニューの「aタグ」を全て取得してみます。
欲しいaタグの階層は「#HeadGlobalNavi>ul>li>a」なので、そのまま querySelectorAll に記述します。

2.では、aタグのテキストを取得してみます!

[…] と書かれている記述は、スプレッド演算子というものです。こちらを使うと、複数のエレメントを取得した際に、簡単にmapなどで回すことができます。

ナビゲーションメニューの文字列を全て取得できました!

2. まとめ

デベロッパーツールなどで、HTMLのデータを取得しようと思った場合、私は基本的に下記2つを使って取得します。

・document.querySelector

・document.querySelectorAll

取得してきた複数のエレメントの場合は、mapやforEach, filter, reduce, every, someなどを駆使して必要な値を取得する、という感じです。

ES6のJSは、ChromeやFireFoxだと標準で動くため、デバッガーツールで使うには非常に便利です。次は、DOM操作繋がりであるSelenium IDEを紹介したいと思います。

RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?