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

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

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

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

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

Q&A

解決済

2回答

1104閲覧

curlでサイトにアクセスした際、ページ内の別アクセスのレスポンスの取得

match12

総合スコア21

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

PHP

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

0グッド

1クリップ

投稿2020/04/29 02:53

編集2020/04/29 07:33

現在、スクレイピングを勉強しており以下のような場合どうしたらいいのか悩んでおります。

curlで指定したURLへアクセスした際、そのページ内ではimage.phpというものを使って画像をランダム表示しています。
そこで現在は再度image.phpへアクセスし、画像を取得していますが、
それだと最初にアクセスした時の画像とは別の画像が取得されてしまいます。(image.phpへの2度目のアクセスなため)

最初にアクセスした際、ページ内でのimage.phpへのアクセスのレスポンスを取得する方法などありませんでしょうか?

有識者の方にお知恵をお貸しいただければと思います。
よろしくお願い致します。

追記です。
対象サイトがユーザー登録が必要なためサンプルを作成しました。
http://match1020.php.xdomain.jp/
上記URLは表示時に画像が別プログラムでランダムで表示されます。

このサイトに対して

$url = "http://match1020.php.xdomain.jp/"; // cURLオプションの設定項目 $option = [ // trueを設定すると返り値を文字列で出力 CURLOPT_RETURNTRANSFER => true, ]; // cURLセッションを初期化 $ch = curl_init($url); // 転送時のオプションを設定 curl_setopt_array($ch, $option); // cURL セッションを実行 $data = curl_exec($ch); // cURLセッションを終了する curl_close($ch); // TODO:表示された画像のソースを取得したい

レスポンスである$dataにはtest.phpによって表示された画像の情報を見つけられませんでした。
optionなども調べているのですが、何かoptionを追加することで
中で呼ばれているプログラムの結果を取得できないかと模索中です。

さらに追記です。

本サイトには文章があり、初期表示の際には文章と画像が紐づいているのですが、
別途画像表示のプログラムにアクセスすると画像がランダムに変わるようで
画像と文章の紐付きが壊れてしまいます。

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

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

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

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

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

m.ts10806

2020/04/29 03:05

何がしたいのか今一つ分かりませんが、ひとまず、現象が確認できるコード提示してください。それがないと何も応えようがないかと。
yuicho

2020/04/29 03:09

> 最初にアクセスした際、ページ内でのimage.phpへのアクセスのレスポンスを取得する方法などありませんでしょうか? 最初のアクセスは何で行っているんでしょうか?
match12

2020/04/29 06:08

申し訳ありません。 対象サイトがベーシック認証などあるため公開できないので サンプルを作成しました。 言葉足らずで申し訳ありませんでした。
match12

2020/04/29 06:09

ここでcurlでアクセスした時に表示・取得された画像のソースが取得したいのです。
yuicho

2020/04/29 11:37

> レスポンスである$dataにはtest.phpによって表示された画像の情報を見つけられませんでした。 申し訳ないですが、実際のレスポンスが見れなければ画像がどう入っているかもわかりませんし、画像がどう入っているか分からなければ取得方法の答えようが無いです。。
match12

2020/04/30 00:16

やはりそうですよね。 本サイトが晒せないのでもう少し色々見てみます。 説明不足、少ない情報でお知恵をお菓子いただきありがとうございました。
yuicho

2020/04/30 01:25

> 初期表示の際には文章と画像が紐づいている とのことなので、何かしら組み合わせを作る方法が存在するはずだと思います。 ブラウザの開発者ツール等使うとわかるかもしれません。
guest

回答2

0

自己解決

時間があいてしまいましたが対象のサイトが閉鎖してしまい解決する前に調査できなくなってしまいました。

投稿2020/09/28 07:53

match12

総合スコア21

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

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

0

すーぱー想像力を働かせて仮定しながら回答しようと思うけど、
仮定がずれていたらまったく意味のない回答になるのでその点はご容赦を。

どこかのサイトのページをcurl関数群かなにかで取得すると
それに含まれる画像を表示する箇所が

<img src="image.php?~~~" />

みたいなのがあるなら、
そのimage.php?~~~を検出してそれをcURLにかければいいんじゃないかなって、
通りすがりに思った。
もちろん、完全なURLに補完してからcURLにかけることになるけども。

じゃぁどうやってimg要素を特定してsrc属性を抽出するか、
ネット上に「php スクレイピング」とかやれば事例はいくつもあるので、
どれかを読みながら作ってみて、躓いてから改めて質問し直すといいかも。

投稿2020/04/29 06:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

match12

2020/04/29 07:21

ありがとうございます。 教えていただいた方法も考えたのですが、本サイトですと画像以外に文章があり、 その文章と画像が紐づいてるので取得後に保管してcURLにかけると 画像と文章の対が壊れてしまうのです。 また、説明不足でしたね。 申し訳ございません。
退会済みユーザー

退会済みユーザー

2020/04/29 07:52

どういうコードを書いてどういうふうに処理しているか察することもできないため、 やり方がまずいのかなとしか言えないです。 (セッション切れで別のユーザーとみなされていたりしませんか?)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問