Yii で単純な php 関数を使用して、Amazon の URL から html ファイルを読み込んで製品価格を抽出しようとしています。php function を使用してファイル全体を取得し始めfile_get_contents
、DOM を使用して html ファイルから価格のみを抽出しました。
HTML ファイルを読み取るために DOM パーサーを使用しています。htmlファイルのタグを読み取る便利な機能があります。これはパーサーです:
http://simplehtmldom.sourceforge.net/
PHP が分析する URL は、amazon.com、amazon.co.uk、amazon.it などです。将来的には、この機能を使用して、Amazon 以外の URL を分析する予定です。
URL から価格を抽出する単純な関数を作成しました。
public function findAmazonPriceFromUrl($url) {
Yii::import('ext.HtmlDOMParser.*');
require_once('simple_html_dom.php');
$html = file_get_html($url);
$item = $html->getElementsById('actualPriceValue');
if ($item) {
$price = $item[0]->firstChild()->innertext;
} else {
$item = $html->getElementsById('current-price');
$price = $item[0]->innertext;
}
return $price;
}
file_get_html
機能は次のとおりです。
function file_get_html($url) {
$dom = new simple_html_dom();
$contents = file_get_contents($url);
if (empty($contents) || strlen($contents) > MAX_FILE_SIZE) {
return false;
}
$dom->load($contents);
return $dom;
}
いくつかのリクエスト (さまざまなリンク) の後、サーバーから常にエラー (エラー 500) が返されることに気付きました。Apache ログ ファイルを確認しましたが、すべて問題ありません。
Amazon は一定時間後に私のリクエストをブロックできますか? どうすれば修正できますか?
助けてくれてありがとう