我想制作一个简单的ikea com产品页面刮刀。这是我得到的
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
return curl_exec($ch);
curl_close($ch);
}
function get_product() {
$product_id ='702.642.81';
$prod_id = preg_replace('/\./', '', $product_id);
$domain = 'http://www.ikea.com/ru/ru/catalog/products/'.$prod_id.'/?type=xml&dataset=normal,allImages,prices,attributes';
$html = curl($domain);
$xml = simplexml_load_string($html);
print_r($xml);
}
这似乎有效。这是get_product()
结果的片段
[products] => SimpleXMLElement Object
(
[product] => SimpleXMLElement Object
(
[URL] => /ru/ru/catalog/products/P70264281/
[browseable] => true
[partNumber] => P70264281
[name] => ЛЕРХАМН
[nameswe] => SimpleXMLElement Object
但有一些产品(产品ID)给出了空洞的回应
[products] => SimpleXMLElement Object
(
)
产品编号为090.071.63。此产品页面的原始链接(在ikea com上)在产品ID products/*S*09007163
之前包含“S”。所以我尝试在$domain
and添加“S”前缀它没有帮助
但如果我将关注此链接http://www.ikea.com/ru/ru/catalog/products/S09007163/?type=xml&dataset=normal,allImages,prices,attributes它向我显示产品数据。
问题是什么?也许有人在此之前就遇到过
我正在做同样的事情,但使用AutoIT3结合JQ和Xidel作为我的工具链。
我的方法是:
所以基本上我自上而下地工作,在本地保存每个列表,以避免向宜家发送太多流量。
最后一步是处理图像和手册。
一些说明: