需要从多个站点获取div的内容

时间:2010-08-28 16:39:50

标签: php screen-scraping

我想从newegg手中抢到产品的价格。这是一个示例网站

http://www.newegg.com/Product/Product.aspx?Item=**N82E16820167027**

来自此网站,我想获得包含价格的<div class="grpPricing">内容。

我不是很擅长制作代码,所以我在网上搜索代码并用它作为一个例子来制作我自己...到目前为止的结果:

 function getprice($itemId) {
    $source=trim("http://www.newegg.com/Product/Product.aspx?Item=".$itemId);

    preg_match("'<div class=\"grpPricing\">(.*?)</div>'si", $source, $match);
    if($match) 
       echo "result=".$match[1];
 }
给出了

$itemId,这就是我可以创建一个循环遍历多个newegg产品并获取所需信息的脚本

注意:它不会让我发布代码,因为它真的应该是,不知道为什么,也许是因为我没有注册?!

和另一个我无法解决的问题......代码的输出应该是:

return strip_tags($price);

因为稍后我会用这一行调用该函数

$price=getprice($row['newegg_productid']);

我已尽力解释清楚,但如果您理解不通,请告诉我。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

为你的开端:

<?php
function get_string_between($string, $start, $end)
{
    $string = " ".$string;
    $ini = strpos($string,$start);
    if ($ini == 0)
        return "";
    $ini += strlen($start);
    $len = strpos($string,$end,$ini) - $ini;
    return substr($string,$ini,$len);
}
$data = file_get_contents("http://www.newegg.com/Product/Product.aspx?Item=N82E16820167027");

$pricediv = get_string_between($data, '<div class="grpPricing">', '<div class="grpAction">');

$pricetext = strip_tags($pricediv);

echo $pricetext;
?>