質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1877閲覧

node.js でスクレイピングしたデータをブラウザで表示させたい

kwtkwt

総合スコア21

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/05/31 08:31

前提・実現したいこと

node.js でスクレイピングしたデータをブラウザで表示させたいのですが下記のようなエラーが出て
うまく取得できません、、

ターミナルで吐き出すことはできるのですが、、

発生している問題・エラーメッセージ

Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec. 127.0.0.1/:1 Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>test</title> 8 9 <script type="module" src="sample.mjs"></script> 10</head> 11<body> 12 13</body> 14</html>

js

1import fetch from './node_modules/node-fetch'; 2import jsdom from './node_modules/jsdom'; 3 4const { JSDOM } = jsdom; 5 6(async () => { 7 const res = await fetch('https://www.yahoo.co.jp/'); 8 const html = await res.text(); 9 const dom = new JSDOM(html); 10 const document = dom.window.document; 11 const nodes = document.querySelectorAll('h1'); 12 const tokyoWeathers = Array.from(nodes, td => td.textContent.trim()); 13 console.log(tokyoWeathers); 14 15})(); 16 17

補足情報(FW/ツールのバージョンなど)

node v15.14.0
Google Chrome バージョン: 90.0.4430.212(Official Build) (x86_64)

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

サーバーがApacheならhttpd.conf.htaccess

<FilesMatch ".mjs$"> AddType text/javascript .mjs </FilesMatch>

のように設定されている必要があるのではないでしょうか。

それが無理ならsample.mjsじゃなくsample.jsにしてしまえばいけそうな気もします。

投稿2021/05/31 09:29

編集2021/05/31 09:32
itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kwtkwt

2021/05/31 09:43 編集

回答ありがとうございます。 >それが無理ならsample.mjsじゃなくsample.jsにしてしまえばいけそうな気もします。 こちら試してみたのですが、同じエラーがでてダメでした。。 >サーバーがApacheなら ローカルサーバについてはvs code の拡張機能のLive Serverをしようしているため、設定がよくわかりません。
itagagaki

2021/05/31 16:08

Live Serverでは無理なのかもしれませんね。 Apache入れましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問