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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

10309閲覧

JavaScript実行後のHTMLを取得したい

nomi

総合スコア32

スクレイピング

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

3クリップ

投稿2018/08/17 06:08

編集2018/08/17 06:20

質問

このサイトのJavaScipt実行後のHTMLを取得する方法を教えてください。テーブルを取得するのが目的ですが、とりあえずHTMLを取得したいです
(いろいろ調べましたがよくわかりませんでした...)

[追記]
サーバー側でスクレイピングを行いたいのでプログラムによってHTMLを取得したいです。
言語はできればGo言語が良いですが、他の言語でも取得可能なら方法を知りたいです

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

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

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

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

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

spookybird

2018/08/17 06:13

どのような手段でどこから取得したいのでしょうか?ただ取得したいなら、ブラウザのデベロッパーツールでも使ってページの欲しい部分をコピペすれば取得できます。
nomi

2018/08/17 06:17

サーバー側で動かす予定なので、プログラムでHTMLを取得したいです。できることならGo言語で取得したいです(他の言語での取得ができるならそちらを優先します)
spookybird

2018/08/17 15:12

では自分で試してみたコードを記載して、どこがどううまくいかないのか具体的な問題点を挙げて質問をしてみてください。
guest

回答3

0

不確実で時間のかかるスクレイピングではなく、この解答欄に書いてある手法を行ってください。
https://teratail.com/questions/12748

更に右クリック→Copy as cURLをクリックすることでターミナルのcurlコマンドとしてそのまま発行し、
後はクリップボードの中身を見ながらGolangのコードに落とし込んで同じヘッダー情報を付与してHTTPリクエストを発射するだけでJSON文字列で帰ってきます。
後はJSONのパースをするだけで配列形式で芋づる式にデータにアクセス出来るでしょう。

投稿2018/08/17 06:27

miyabi-sun

総合スコア21158

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

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

nomi

2018/08/17 06:50

リンク先のページを見ました!手順6の「Headersタブの下にあるForm Data」というのが見つかりません...どこにあるのでしょうか...?
nomi

2018/08/17 07:27

https://csacademy.com/contests/ このサイトでやってもForm Dataが出てきません...他のサイトなら出てくるものもありましたが...
guest

0

Google ChromeのHeadlessモードが有用かと思います。

サーバーサイド環境のJavaScript(Node.js)であれば下記のコードで、ページ上のJavaScript実行後のHTMLが得られると思います。
コードを実行する前にnpm install puppeteerコマンドで、必要となるライブラリpuppeteerをフォルダに読み込んでおく必要があります。

javascript

1const puppeteer = require('puppeteer'); 2 3(async () => { 4 let browser = await puppeteer.launch(); 5 let page = await browser.newPage(); 6 // ページを読み込み後、0.5秒間ネットワーク接続が1つもない状態が続くまで待つ 7 await page.goto('https://csacademy.com/contests/', { 8 waitUntil: 'networkidle0' 9 }); 10 let html = await page.evaluate(() => document.documentElement.outerHTML); 11 process.stdout.write(html); 12 await browser.close(); 13})();

投稿2018/08/18 08:46

編集2018/08/18 09:07
reosablo

総合スコア339

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

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

0

ちょっとF12キーを押してみてください。

投稿2018/08/17 06:15

ryusan_012

総合スコア59

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

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

nomi

2018/08/17 06:17

F12を押すとソースコードが表示されますが、この情報をプログラムによって取得することは可能でしょうか?
ryusan_012

2018/08/17 06:20

ソース自体なら右クリック→COPYからいけますが…
nomi

2018/08/17 06:25

情報ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問