繁体   English   中英

如何在没有Amazon API的情况下从Amazon Url提取价格

[英]How to extract price from Amazon Url without Amazon API

我正在尝试从Amazon URL加载html文件,以使用Yii上的简单php函数提取产品价格。 我开始使用php函数file_get_contents获取整个文件,然后从带有DOM的html文件中仅提取价格。

我正在使用DOM解析器来读取HTML文件。 它具有读取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日志文件,但是一切都很好。

亚马逊可以在一段时间后阻止我的请求吗? 我该如何解决?

先谢谢您的帮助

我遇到了同样的问题,这是我的解决办法:如果未解析图片,我将再次运行脚本。 图像首先在我的php脚本中解析,所以我检查它是否有效并且Amazon提供信息。 希望对您有所帮助。

if($html->find('#main-image')) {    
   foreach($html->find('#main-image') as $e) {
      echo '<span href="'. $e->src . '" class="imgblock parseimg">
               <img src="'. $e->src . '" class="resultimg" alt="'.$name.'" title="'.$name.'">
            </span>
            <input type="hidden" name="my-item-img" value="'. $e->src . '" />';
   }
} else {
   gethtml($url,$domain);
   die;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM