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

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

新規登録して質問してみよう
ただいま回答率
85.31%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

2739閲覧

ブラウザに表示されるが、ソースコードに現れない文字列(ソースコード)を取得したい

kobo_jp

総合スコア19

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/14 06:35

編集2019/02/14 07:23

前提・実現したいこと

任意のWebサイトのソースコードを取得したいと考えています。
例えば産経新聞のサイトで「西武」を検索した記事一覧の結果は
次のページで取得できます。
https://www.sankei.com/search/?q=%E8%A5%BF%E6%AD%A6

言語はPHPまたはExcel VBAです。

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

上記、産経新聞の検索結果をブラウザ上で見ることはできますが、
ソースコードを見ても「西武」の記事一覧は見当たりません。
埋込式になっているのだと思いますが、埋め込まれているソースコードを
簡単に取得できる方法はありますか?

エラーメッセージ

該当のソースコード

PHP

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2019/02/14 06:39

タグはどのように関係しているのでしょうか。
kobo_jp

2019/02/14 06:45

ソースコードの該当部分は次の箇所だと思うのですが、 多分PopIn(?)という部分が表すようにしているのだと思います。 <div id="wrapper"> <h1 class="speech">検索結果 - 産経ニュース</h1> <header class="header" id="header_main"> <div class="header_upper"> <div class="header_left"> <div class="today"></div> <script async src="/common/js/v1/widget/today.js"></script> <div class="menu_toggle" id="menu_toggle"><a href="/menu/navigation.html"><span></span><span></span><span></span></a> <p>メニュー</p> </div> </div><a class="logo" href="/">THE SANKEI NEWS</a> </div> <div class="header_lower"> <div class="header_inner"> <div class="column_list" id="column_list"></div> <script>$SKD.loaderHTML("/module/edit/header/column.html", "#column_list");</script> <div class="label_list" id="label_list"></div> <script async src="/common/js/v1/widget/cxTopics.js"></script> </div> <div class="test" id="member_list" data-member-pos="header"></div> <script async src="/common/js/v1/all/member.js"></script> </div> </header> <main role="main"> <div class="one_column" id="contents_primary"> <div id="popInResult" style="margin: 0 auto;"></div> <script src="https://www.google.com/jsapi"></script> <script src="https://api.popin.cc/popIn_custom_search-min.js" charset="UTF-8"></script> <script src="https://api.popin.cc/partner/popin_sankei_news.js" charset="UTF-8"></script> </div><a class="page_top" href="#wrapper"></a> </main>
m.ts10806

2019/02/14 06:47

タグはこの質問につけられているPHP、Excel のことですよ。
kobo_jp

2019/02/14 06:54

HTMLを取得するプログラムをPHPとExcel VBAで書いてるんです。
m.ts10806

2019/02/14 06:55

これだけでは誰もわからないので、きちんと追記してください。 見ている人は全て赤の他人。質問に書いてあることしか読み取れませんので。
kobo_jp

2019/02/14 07:23

言語を追記しました。 失礼いたしました。
guest

回答3

0

埋込式

いえ。ブラウザのデベロッパーツールを利用してみれば分かると思いますが、
埋め込みではなく、JavaScriptなどで動的にHTMLが書かれています。
非同期通信(Ajax)ですね。

埋め込まれているソースコードを

簡単に取得できる方法はありますか?

ソースコードではなく情報自体を取得することになりますが、
RSSが提供されているようなものであればそちらを利用すると良いのでは。

表示されている画面情報を解析するような技術もありますが、問題も多くあるため、
できれば公式に提供されているAPIとか上記のRSSなど利用するのがトラブルなく確実です。

投稿2019/02/14 06:46

編集2019/02/14 06:54
m.ts10806

総合スコア80888

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

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

kobo_jp

2019/02/14 07:00

情報ありがとうございます。 RSSの中身をキーワード検索する方法がわかりませんが いろいろ探ってみます。
guest

0

ベストアンサー

Webサイトのソースコード

というのが曖昧なんで、とりあえずHTMLの意味で理解して回答してます。

回答は、そのようなものは存在しません。

ご提示のリンクを、キャッシュを持たない状態でロードすると(こちらのPCと回線が重いだけかもしれませんが)、最初検索ボックスがでて、ワンテンポ遅れて結果がでます。
これは結果を別口で取りに行ってます(ajaxとかいう動き)

この際、(普通は)画面のHTMLを取るのではなく、画面を構成するのに必要な文字列だけをとってきて、テンプレートに差し込み印刷する感じで、画面を作ってます。

なので、見た目に対応するHTMLは存在しません。

tool

投稿2019/02/14 06:41

編集2019/02/14 07:33
papinianus

総合スコア12705

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

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

papinianus

2019/02/14 06:42

ブラウザの機能で、HTMLとして保存、とかすると、欠落酷いでしょうがHTMLが取れるかも
kobo_jp

2019/02/14 06:52

はい、HTMLのタグ取得の意味です。 そうですか。 見た目どおりの文字列を取得することはできないんですね。 残念です。
m.ts10806

2019/02/14 06:52

> HTMLとして保存 割としっかり取れますね。これ。
kobo_jp

2019/02/14 06:55

ブラウザで保存するときれいに取れるんですね。 ただ、今回はプログラミングで自動で取りたいので・・・。
papinianus

2019/02/14 06:58

例えば、私が今、目にする1件目は↓こういうjsonという形式の文字データの羅列がおっしゃる"PopIn"によって取得されてきます -- "highlighting":{"https://www.sankei.com/economy/news/190213/prl1902130304-n1.html":{"content":["京王新宿店・<span><b style='font-weight:bold'>西武</b></span>池袋店・伊勢丹府中店・そごう横浜店・ラゾーナ川崎店・阪急うめだ店・ジェイアール名古屋タカシマヤ店) 、ぶどうの木&鎌倉座阿佐ヶ谷店、パクとモグ小田急町田店 ※店舗によりお取扱のない入り数もあります。 ※このほか一部姉妹店で販売する場合もあります。"],"title":["5秒で苺ミルク? 銀のぶどうホワイトデー人気歴代No.1春ショコラが、期間限定登場   株式会社グレープストーン 銀のぶどう全店で2月15日(金)販売開始  株式会社グレープストーン(本社:東京都中央区銀座)が展開する洋菓子ブランド「銀のぶどうhttps://"]}, -- 解釈する技術があったとしても、非公開APIなので、ここから取るのは法的にも仕様がいつかわるか分からないという点でもやめたほうがいいです mts10806様 無駄な外部リソースがないんですかね。もちろん、基本としてhtmlとしての作法にちゃんと乗ってるのもあるでしょう。いずれにしても、エンジニアがちゃんとしてるという印象
m.ts10806

2019/02/14 07:01

別で書いてますがこの質問内容ではプログラミングでとりたいってわからないので修正しておいてくださいね。 (厳しいこと言うと、スクレイピングするにも提示のサイトが非同期で記事取得して表示させてるとかhtmlの構成も今一つな状態では無理だと思う。もっと学ばなきゃいけないことが先にわんさかあります)
papinianus

2019/02/14 07:02

phpとexcelvbaという組み合わせも良く分からないものがありますし、スクショ違法化みたいな動きがある現在で全くお勧めできませんし、全くもって責任も取れませんが、seleniumbasicというvbaからブラウザを操作するツールを考えてはどうでしょうか。 一応自己弁護のために補足しておきますが、スクレイプが許されているか、サイトの趣旨から禁止の意図が読み取れない(最低でも会員制をとってない)サイトで試してください。
m.ts10806

2019/02/14 07:03

papinianusさん そういうことですね…。 ソース解析して取得するのであれば問題ない情報形式かなとは思いました。 まあ、それと本当にやっていいかは別問題
kobo_jp

2019/02/14 07:07

凄い!どのjsonかわかったんですね。 どうしてわかったのでしょうか? 法的な問題があるとは知りませんでした。 やめたほうがいいんでしょうか、やっぱり。
kobo_jp

2019/02/14 07:11

PHPとExcel VBAの組み合わせではなく、 PHPはPHP、Excel VBAはExcel VBA 別個のプログラムとして作りたいのです。
m.ts10806

2019/02/14 07:18

私の回答と当回答はある程度連動してると思っていただいて良いかもしれません。 「ブラウザのデベロッパーツールで確認」とか「”問題も多くある”に貼ってあるWikipediaのリンク」とか「RSS配信や公式に提供されているAPIの利用」とか。 とりあえず、質問修正してそれぞれコードも追記してもらった方がいいですね。 (それでついた具体的な回答があったとして問題があっても責任は他でもない質問者さんだけに問われます)
papinianus

2019/02/14 07:23

mts10806様のおっしゃる 「ブラウザのデベロッパーツールで確認」 です。 見方はいろいろありますが、今回のは明らかに時間かかってるレスポンスがあるので、ChromeでNetworkタブみつつ、反応遅いやつをいくつか見れば検討がつきます。
kobo_jp

2019/02/14 07:25

ブラウザのデベロッパーツールで確認してみたのですが、 私の力量不足のためよくわかりませんでした。 もっと勉強の必要がありそうです。
papinianus

2019/02/14 07:28

グラフっぽいの見えてます?デベロッパツールを開いたまま、ページアクセスする必要があります。 そのグラフのタイムラインの後ろのほうをクリックすると、そのタイミングでレスポンスされたものがフィルタされるので、ファイル名っぽいところをクリックしていくと、中身が見えます。
kobo_jp

2019/02/14 07:28

ありがとうございます。 私もChromeのデベロッパーツールを見ているのですがどこを見たらよいのかさっぱりです。 もっと根気よく研究したほうがよさそうですね。
papinianus

2019/02/14 07:35

この辺という画像を付けました。 ネットワークを開いてページアクセスすると、グラフ以下がでます。 上のところで遅れてレスするやつ選択して、下の左でファイル選んで、右のhighlightsの中にあります。 さすがに使いかたは、慣れていただくしか。
kobo_jp
kobo_jp

2019/02/14 08:03

mts10806さん、ありがとうございます。 非同期通信関係もこれから勉強させていただきますね。
guest

0

javascript

1<script> 2console.log(decodeURIComponent("%E8%A5%BF%E6%AD%A6")); 3</script> 4
  • hoge.php?q=%E8%A5%BF%E6%AD%A6

PHP

1<?PHP 2print filter_input(INPUT_GET,"q"); 3?>

投稿2019/02/14 06:50

yambejp

総合スコア117728

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

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

kobo_jp

2019/02/14 07:17

回答ありがとうございます。 PHPの方を試してみたのですがブラウザ上に「西武」と表示されただけでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問