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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Curl(プログラミング言語)

Curl(プログラミング言語)は、Webコンテンツ向けのプログラミング言語。HTMLのようなテキスト記述やレイアウトデザイン、JavaScript のようなオブジェクト指向プログラム言語、Java のような重量機能など複数の言語の特徴を一つのフレームワークに統合しています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

0回答

1459閲覧

Curlを使った情報取得に手間取っています。

syosin

総合スコア12

Curl(プログラミング言語)

Curl(プログラミング言語)は、Webコンテンツ向けのプログラミング言語。HTMLのようなテキスト記述やレイアウトデザイン、JavaScript のようなオブジェクト指向プログラム言語、Java のような重量機能など複数の言語の特徴を一つのフレームワークに統合しています。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

2クリップ

投稿2019/05/28 04:19

前提・実現したいこと

アンテナサイトなどのデイリーランキングなどの日毎変わる動画URLを自動で取得したい。

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

コードを公開しているサイトがあったのですが、その通りにやってもできないので解決できずこちらに質問させていただきました。
MIXHOSTのCORNジョブに設定しても実行されていない。

該当のソースコード

//【実行トリガー】これをCORNに設定します。

PHP

1$scrape_url_list = array( //配列でURLを送ると並列処理されます 2 htmlspecialchars_decode( 'スクレイピング対象URL①' ), 3 htmlspecialchars_decode( 'スクレイピング対象URL②' ), 4 htmlspecialchars_decode( 'スクレイピング対象URL③' ) 5); 6$seikihyougen = "正規表現パターン"; 7$scrape_content = scraping_content($scrape_url_list, $seikihyougen);

【function.php】

function scraping_content($scrape_url_list, $seikihyougen){ $scrape_content = array (); $TIMEOUT = 40; $mh = curl_multi_init(); foreach ($scrape_url_list as $u) { $ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_URL => $u, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => $TIMEOUT, CURLOPT_CONNECTTIMEOUT => $TIMEOUT, //CURLOPT_PROXYPORT => "プロキシのポート", //CURLOPT_PROXY => "プロキシ", //CURLOPT_PROXYUSERPWD => "プロキシのパスワード", )); curl_multi_add_handle($mh, $ch); } do { $stat = curl_multi_exec($mh, $running); } while ($stat === CURLM_CALL_MULTI_PERFORM); if ( ! $running || $stat !== CURLM_OK) { throw new RuntimeException('リクエストの開始不可、URLの設定を確認'); } do switch (curl_multi_select($mh, $TIMEOUT)) { case -1: //selectに失敗 usleep(5); do { $stat = curl_multi_exec($mh, $running); } while ($stat === CURLM_CALL_MULTI_PERFORM); continue 2; case 0: //タイムアウト continue 2; default: //どれかが成功 or 失敗した do { $stat = curl_multi_exec($mh, $running); } while ($stat === CURLM_CALL_MULTI_PERFORM); do if ($raised = curl_multi_info_read($mh, $remains)) { $info = curl_getinfo($raised['handle']); echo "$info[url]: $info[http_code]: $info[total_time]\n"; $response = curl_multi_getcontent($raised['handle']); if ($response === false) { echo 'ERROR!!!', PHP_EOL; } else { $pattern = "$seikihyougen"; $match = array(); preg_match_all($pattern, $response, $match, PREG_SET_ORDER); $count = count($match); for ($j = 0; $j< $count; $j++) { $hinban = $match[$j][1]; array_push($scrape_content, $match[$j]); } // for $j } curl_multi_remove_handle($mh, $raised['handle']); curl_close($raised['handle']); } while ($remains); } while ($running); echo 'finished', PHP_EOL; curl_multi_close($mh); return $scrape_content; }

試したこと

URLのところに持ってきたい動画ページのURLを入れるみたいなのですが、それだと動画ページ毎にURLを貼り付けなくてはいけないので「自動」ではないと思います。ただ、試しに動画ページURLを入れてみたのですが、メールが届いていないので実行されていないのだと思います。このコードに何か足りないところや、このコードでは実現したいことはできない。などがありましたら教えてもらえないでしょうか?

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

MIXHOSTでwordpressの中での話です。
phpに関しては関数を覚えたて程度の知識しかありません。よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/05/28 04:45

自分でやりきれないのであれば、いっそアウトソースしたほうが解決が早いですよ。
syosin

2019/05/28 04:52

ありがとうございます、そういう意見もありますね。
CHERRY

2019/05/28 04:58 編集

質問の内容からは判断できませんが、何をどのように cron に登録されたのでしょうか? また、 上側の PHP コードから、 scraping_content は呼び出せていますか?
syosin

2019/05/28 05:03

すいません、足りていなかったですね。【実行トリガー】のコードを書き込んだファイルをpublic_html内のサイト直下に置いてmixhostの手順通りにcornジョブというところに登録しました。
Eggpan

2019/05/29 15:28

前提・実現したいことがよく分からないのですが、 ・Wordpressで自分のサイトを作っている ・上記自分のサイト内に、アンテナサイトから抽出したURLを埋め込みたい ということでしょうか? それとも、単純にcronを使って定期的にURLを抽出したいだけであって、実はWordpressは無関係なのでしょうか? 関数の中身ざっとよみましたけど、 ・URLと一緒に、どの部分を抽出するかを正規表現を使って書かないといけない ・この関数だと $scrape_content に配列が入るだけで何も起こらない。配列をどうするかは自分で書く必要がある みたいな感じのコードです。 あと、コードの利用方法がわからないのか、cronの使い方がわからないのか、両方なのかもちょっと分からないです。 両方わからないのであれば、cronとかより前に、手動で動かすのが先かと思います。 現状の質問文だと、やりたい事も、詰まっている部分も読み取れないので、適切な回答が出来ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問