Javascript 从samsclub.com上获取产品详细信息

Javascript 从samsclub.com上获取产品详细信息,javascript,php,ajax,scrape,Javascript,Php,Ajax,Scrape,我正在使用PHP从SamsClub.com中抓取数据 $res = file_get_contents('http://www.samsclub.com/sams/bath-towel-apple-gr-100-cotton/prod10450797.ip'); 我使用PHP explode创建函数来获取数据 function getData($content,$start,$end){ $str = explode($start,$content); $str = e

我正在使用PHP从SamsClub.com中抓取数据

    $res = file_get_contents('http://www.samsclub.com/sams/bath-towel-apple-gr-100-cotton/prod10450797.ip');
我使用PHP explode创建函数来获取数据

function getData($content,$start,$end){
    $str = explode($start,$content);
    $str = explode($end,$str[1]);
    return $str[0];
}
已成功获取所有必需的数据,但只剩下一项。这是产品的变化意味着其他颜色,正如你在快照中看到的,有不同的颜色可用

当我们选择其他颜色时,产品的项目#和型号#也发生了变化,如下面的快照所示

我还想获取其他颜色的信息,如“item#和model#


等待你们的回复。

我建议使用.NET和浏览器类进行抓取。通过这种方式,您可以让机器人单击每种颜色,然后获取所需的值。

要做到这一点,您需要使用一个库()。只要把simple_html_dom.php上传到你可以包含它的地方(在我的代码中,它在同一个文件夹中)


谢谢@mariobgr,但我希望它是PHP的,我还需要在基于Linux的Apache服务器上运行它。嘿,我的回答对你有帮助吗?我花了两个小时的时间,xD你们是否期待一些不同的东西?@GiacomoTecyaPigani我需要更多的东西,我想保存数据库中的所有信息,还需要产品名称。你能帮我一下吗。我对“simple_html_dom”没有任何经验好的,我会帮你抓住产品名称,这很简单。。。但是对于数据库部分,您需要自己完成。今天我将更新我的答案,只需添加:
$ProductTitle=$html->find('span[itemprop=name]',0)->纯文本
after
$html=file\u get\u html($url)它可以在任何地方,就在你得到html之后。另外,请查看此文档,在这里您将找到您需要了解的所有信息;)好的,我来看看。但是,如果你的专业知识不足以胜任这项工作,你可以解雇他们,把工作交给我。说真的,如果你想刮东西,给我发一封电子邮件给索尔迪(.)泰西亚(@)自由人(.)它,这样我们可以谈得更好。
<?php

$url = 'http://www.samsclub.com/sams/bath-towel-apple-gr-100-cotton/prod10450797.ip';

include('simple_html_dom.php');

$html = file_get_html($url);
$colour = array(); $item = array(); $model = array();
$script = $html->find('div[id=variance] script', 0)->innertext;
$script = preg_replace('/\s+/', ' ', $script);
$scripts = explode (";", $script);

$script = $scripts[2];
$id = $scripts[4];
$type = $scripts[5];

$script = str_replace("skuJson.skuVariantJson = $.parseJSON('", "", $script);
$script = str_replace("')", "", $script);

$colours = json_decode($script);

preg_match("/'([a-z0-9]*)'/", $type, $types); $type = $types[1];
preg_match("/'([a-z0-9]*)'/", $id, $ids);     $id   = $ids[1];

$script = $html->find('script', -1)->innertext;
$scripts = explode (";", $script);

$time = $scripts[0];
preg_match('/"([0-9]*)"/', $time, $times);    $time   = $times[1];

foreach ($colours as $key => $value) {
    $url = 'http://www.samsclub.com/sams/shop/product/ajax/ajaxSkuVariant.jsp?skuId='. $value .'&productId='. $id .'&productType='. $type .'&_='. $time;
    $html = file_get_html($url);
    preg_match('/"legacyItemNumber":"([0-9]*)"/', $html, $match); $item[] = $match[1];
    preg_match('/"model":"([a-z-]*)"/i', $html, $match); $model[] = $match[1];
    $colour[] = substr($key, 0, -1);
}

//Print results
echo "<pre>"; print_r($colour); echo "</pre>";
echo "<pre>"; print_r($item);   echo "</pre>";
echo "<pre>"; print_r($model);  echo "</pre>";

?>
Array
(
    [0] => White
    [1] => Burgundy
    [2] => Apple Green
    [3] => Lilac
    [4] => Chocolate
    [5] => Sage
    [6] => Grey
    [7] => PckBlue
    [8] => Linen
    [9] => null
    [10] => Plum
    [11] => Clay
    [12] => Light Blue
)

Array
(
    [0] => 252368
    [1] => 252505
    [2] => 252414
    [3] => 433076
    [4] => 252389
    [5] => 117268
    [6] => 252438
    [7] => 613317
    [8] => 252382
    [9] => 433083
    [10] => 252541
    [11] => 117175
    [12] => 252400
)

Array
(
    [0] => SAMW-B
    [1] => SAMB-B
    [2] => SAMA-B
    [3] => SAMLC-B
    [4] => SAMCH-B
    [5] => SAMSS-B
    [6] => SAMGR-B
    [7] => SAMPB-B
    [8] => SAMLI-B
    [9] => SAMDR-B
    [10] => SAMP-B
    [11] => SAMTC-B
    [12] => SAMLB-B
)