Javascript 从samsclub.com上获取产品详细信息
我正在使用PHP从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
$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
)