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

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

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

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

Q&A

解決済

2回答

2190閲覧

PHPで外部テキストファイルを読み込んだ時、成功する場合とエラーが出る場合がある

igaiga

総合スコア144

PHP

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

0グッド

0クリップ

投稿2016/05/19 07:22

「simple_html_dom」を使用してスクレイピングをしていますが、うまく動作しないのでお知恵を拝借したく相談させていただきました。

###前提・実現したいこと
以下のようにして外部のテキストファイル(URLリスト)を読み込むと後述のエラー内容のように表示されます。ページが見つからないということだと思いますが、URLを直接叩くとリンクしますので存在はしています。
テキストファイルは1行ごとに1URLが記載され、1000行ほどあります。

###PHP

<?php header("Content-Type: text/html; charset=UTF-8"); require_once('simple_html_dom.php'); // 読み込むファイル名の指定 $file_name = "sample3.txt"; // ファイルを全て配列に入れる $ret_array = file( $file_name ); foreach ($ret_array as $url) { $html=file_get_html($url); echo $html; //タグの情報を取り出す $title = $html->find('h2',0); echo $title; } ?>

###エラー内容

Warning: file_get_contents(http://hogehoge/facility/40/ ): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/www/simple_html_dom.php on line 76 Fatal error: Call to a member function find() on a non-object in /home/www/test.php on line 17

###試したこと
・テキストファイルが1行だった場合は想定通り動作しました。
・simple_html_dom.phpが正常に動作していることは別のPHPで確認しています。
・URLリストを別のものに変更すると動作したことがらURLに不備があるように見えますが、URLを直接叩くと普通に飛びます。またパーミッション、文字コード、改行コードは成功したファイルと失敗したファイルともに同じでした。
・リスト化されたURLはどちらも擬似静的化されたのものです。

以上です。
よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

具体的なURL などの情報がないので推測ですが...

相手先のサーバーが、高負荷でページを返せなかった。

同一IPアドレスからの連続的なアクセスを制限している。

ユーザーエージェントのチェック や HTTPリファラー、Cookie などを要求している場合もありそうです。

javascript で、ページを生成している。

あとは、何がありそうかな。

投稿2016/05/19 10:00

CHERRY

総合スコア25171

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

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

0

1000行ということなのでリクエスト過多だと思います。
リソースを確認してみては?、

投稿2016/05/19 08:38

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問