dポイントプレゼントキャンペーン実施中!

よろしくお願いします。

PHP であるサイトをスクレイピングしているのですが、str_get_htmlが特定?のページだけ処理が失敗します。

例えば、1ページ~10ページ目までをスクレイピングしているときに、8ページ目だけ失敗します。

str_get_htmlの処理に失敗する原因って何々あるんでしょうか?

以下は、サーバ・PHPの情報になります。
・サーバ:さくらのレンタルサーバ スタンダード
・PHP -v 5.4.22
・ソース
$HTML = file_get_contents($url);
$encode_HTML = mb_convert_encoding($HTML, 'UTF-8', 'CP932');
$Dom = str_get_html($encode_HTML);
// ここで$Domに値がはいっていないのを確認しました。
// print_r($encode_HTML); はHTMLソースにはなってました。
if ($Dom){
echo "OK";
}else{
echo "NG";
continue;
}

A 回答 (1件)

再帰上限の問題でしょうか?


http://tips.recatnap.info/error_recursion_run_10 …

【代替案1: DOMDocument::loadHTMLFile】
http://php.net/manual/ja/domdocument.loadhtmlfil …

$dom = new DOMDocument;
@$dom->loadHTMLFile($url);

【代替案2: preg_match】
http://php.net/manual/ja/function.preg-match.php

こちらは正規表現の知識が必要となります。
    • good
    • 0
この回答へのお礼

結果文字コードの問題でしたw

エンコーディングするとき、cp932→UTF8にしてましたが、
AUTOにしたら上手くいきました。

ありがとうございました。


--参考にしたサイト--
http://tenifre.hatenablog.jp/entry/2013/04/11/PH …

お礼日時:2013/12/20 16:43

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