重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

htmlの<script language="JavaScript">内の関数を実行してWeb内容を更新したいです。
あるサイトをスクレイピングしているのですが、自分がほしいデータはhtmlの埋め込み関数がボタンが押されることによって更新されます。
なので、外からその関数を実行してやればほしいデータが手に入るのでは?と思い、質問させていただきました。

pythonになれているのでできればpythonでどのようにすればいいのか教えていただきたいです。
しかし、その他の言語でも全く構いません。
どなたか教えていただけないでしょうか。

下の例で言うと、ボタンを押すとvalueが表示される。このvalueを取得したい。

-------htmlのイメージ------
<html>
<head>
<script language="JavaScript">
<!--
value = 0;
function exec()
{
  value++;
document.getElementById("value").innerHTML='<font><B>’ + value + '</B></font>';
}
-->
</script>
</head>
<body>
<input onclick="JavaScript:exec()" type="button" />
<div id="value"><!-- execを実行するとここにfont・Bタグが入る その中のvalueを受け取りたい-->
</div>
</body>
</html>

質問者からの補足コメント

  • 自分の質問が紛らわしいので、おそらく勘違いされているのではないかと推測します。
    このhtmlページは自分で作成するものではなく、web上に公開されている者を想定しています。
    よって、独学で超初心者なのでよくはわかっていないのですが、formからの送信はできないと
    思います。さらに、上のhtmlは例ですので、実際はもっと複雑となっています。

    自分のやりたいことをまとめると、web上に表示されるデータ(数字の配列)を取得したいのだが、その表示の前に複雑な処理がかかっていてそのままスクレイピングをしようとすると結果が得られないので、それに対処したいということです。

    色々間違っているかもしれませんが、調べる方法だけでも構いませんので
    回答よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/08/14 19:11

A 回答 (2件)

No1です。



>おそらく勘違いされているのではないかと推測します。
回答にも書きましたが、勘違いではなく「質問文からではわからない」ので、ありそうな内容を推測して回答しただけです。ですので、当たるも八卦みたいなものです。

>そのままスクレイピングをしようとすると結果が得られない
対象とするページがどのような仕組みになっているかによって方法は変わるでしょう。
仕組みによっては無理な場合もあり得ます。

ほとんど内容がわからないので、以下は推測だけによる回答です。

例えば、入力値をform送信するような仕組みの場合であれば、URLとクエリをダイレクトに作成してアクセスするだけで済むのかも知れません。

最適かどうかはおいていおいて、対応範囲が広いかも知れないのは、手動での操作を自動で行う方法でしょうか。
windowsであれば、ブラウザ(IE)をvbsなどから制御して必要な操作を行うなといった方法です。
https://www.fastclassinfo.com/entry/vba_ie_links …
    • good
    • 0
この回答へのお礼

失礼な補足をしてしまい、本当に申し訳ありませんでした。それにもかかわらず、私の分かりにくい文章を読み解こうと努力してくださり、こうして回答してくださったことにとても感謝しています。

ところで回答の件ですが、vbsを使えば確かにできそうでした。解決の糸口を示してくださってありがとうございます。

回答してくださって本当にありがとうございました

お礼日時:2019/08/16 14:11

こんにちは


なさりたいことがよくわからないので、的はずれかもしれませんが・・・

>このvalueを取得したい。
スクリプトをみる限り、valueは最初に送る際は「1」の値以外は取らないので、それ以外の値を送りたいなら、直接値をセットして送る方が良さそうに思えます。

「取得したい」のはサーバ側のブログラムでしょうから、普通にformから送信すれば良いのではないでしょうか。
あるいは、URLのクエリ部を利用して「URL?value=××」として直接リクエストするとか。
どちらの場合も、レスポンスを待ってページ遷移が行われます。
遷移をさせたくないのであれば、ajaxを利用するとかでしょうか。
https://developer.mozilla.org/ja/docs/Web/Guide/ …
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答本当にありがとうございます。返信が遅れてしまい申し訳ありませんでした。
どうにか対処したいので、またの回答よろしくお願いします。

お礼日時:2019/08/14 19:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!