今回は「パースをすることになった」の下りが相当まずく大問題です。
「なった」というのは決定であり合意です。会議かなんかで決まったのですよね?
- なんでやる内容も意味も知らないのにパースしましょうで合意しちゃったの?
- なんで提案した奴に理由や何をするか聞かないの?
言った奴の気持ちを考えてくださいってそんなの国語の授業じゃないし、
問題として出すなら議事録全部出せって話で、出したら出したで守秘義務どうすんのって話になるし、
それをteratailで教えて下さいって教えられる訳ないでしょ!
まぁ、無知のまま丸め込まれて、後でパースを調べて「ん???」となってるんだと思います。
一旦「パースする意味もなさそうなのですが、どうして必要なのでしょうか?」と提案した人にボールを投げ返しましょう。
パースする必要がない?
- MySQLには妥当なデータのみが格納されているべきだから
- WebサーバはHTTPリクエストに見合った結果(文字列)を返すのが仕事だから
まず、MySQLというのは直で集計等を行うデータベースです。
全て妥当なデータのみが格納されているべきで、不正なデータは格納せず弾きましょう。
「不正なデータが多くて集計できないよ!」とかアホ丸出しです。
そしてWebサーバというものはHTTPリクエストを解析し、
GETメソッドならばパスとクエリを確認して適切な文字列を返すのが主な業務です。
MySQLに文字列が埋まっているならば、そのまま返せばよろしい。そういうものです。
私はエスパーなのでもう少し質問文の行間を読んでいきましょうか。
実はやっぱりパースする必要あったんじゃね?
じゃあなんで、先輩なり上司なり…誰が言ったかはどうでもいいですが、「パースしましょう」なんて言い出したんでしょうね?
先日の質問にXXXを埋め込むみたいな質問が多くありましたが、
それがダイレクトに関係しているんじゃないですか?
例えばMySQLに格納されているHTML文字列を取り出して、
hoge
クラスの文字列に現在時刻を格納して欲しい…みたいな。
だったらcheerioを覚えましょう。
Node.jsのHTMLパーサ「cheerio」
このライブラリを使えばjQueryのような使用感でHTML的なStringを解析して、
特定クラスやID内の文字列を抽出したり、文字を埋め込んでHTMLを固め直すということが楽に行えます。
流石にこれ以上は質問文から逸れすぎなので控えますので、
合ってたらとりあえず目を通しつつ、cheerioの公式サイトやドキュメントにも目を通してみましょう。
サーバーサイドでHTML文字列をパースする理由が分かりません。
考えるとすれば検索エンジンの都合です。
JavaScriptの実行部分がSEOで評価されるかされないか分からないから、
最初から完成されたHTMLファイルが必要なんですよ。
例えJSの実行部分が評価される作りだったとしても、
何時、どこで、何が実行されたか分からないですよね。
DOMを作りかけのレイアウト崩れしまくった所でパシャっとスクショを取るように持っていって、検索エンジンのインデックスに組み込まれる可能性だってあります。
要するに怖い。
なのでReact.jsなんのJSフレームワークで、
シングルページアプリケーションを作るのがトレンドになっていますが、
なんでもかんでもSPAで作るとSEOのランク的に不安だしレンダリングに時間がかかるので、
予め初回表示用のHTMLを作っておく「サーバーサイドレンダリング」という技術が新しく生まれた程ですからね。