0

我试图在两个不同的中国购物网站的“产品页面”中提取主图像。

站点 1 产品页面链接: http ://www.aliexpress.com/item/100FT-7-Core-Strand-550-Parachute-Cord-Nylon-Lanyard-Desert-Paracord-Survival-Kits-For-Climbing-Camping /541809415.html

站点2产品页面链接: http ://detail.china.alibaba.com/offer/1235158006.html

我的代码适用于站点#1,但对于站点#2,我得到一个奇怪的短 html 字符串。

这是我的代码:

<?php 
require_once('./includes/simple_html_dom/simple_html_dom.php');

$url="http://www.aliexpress.com/item/100FT-7-Core-Strand-550-Parachute-Cord-Nylon-Lanyard-Desert-Paracord-Survival-Kits-For-Climbing-Camping/541809415.html";
$html=file_get_html($url);

echo "html lenght : ".strlen($html)."<br>";

foreach($html->find('meta[property=og:image]') as $element) {
    echo("result : ".$element->content);
    }

echo "<br>-------------------------------------------------------------------<br>";

$url="http://detail.china.alibaba.com/offer/1235158006.html";
$html=file_get_html($url);

echo "html lenght : ".strlen($html)."<br>";

foreach($html->find('div[id=J_DetailInside]') as $element) {
    echo("result : ".$element->innertext);
    }
?>

我一直在尝试使其正常工作但没有成功,任何帮助将不胜感激!

4

1 回答 1

2

原因是如果第二个站点没有得到任何用户代理,它会重定向到 127.0.0.1 您必须像这样使用 curl 设置用户代理:

<?php
require_once('simple_html_dom.php');

$url="http://www.aliexpress.com/item/100FT-7-Core-Strand-550-Parachute-Cord-Nylon-Lanyard-Desert-Paracord-Survival-Kits-For-Climbing-Camping/541809415.html";
$html=file_get_html($url);

echo "html lenght : ".strlen($html)."<br>";

foreach($html->find('meta[property=og:image]') as $element) {
    echo("result : ".$element->content);
    }

echo "<br>-------------------------------------------------------------------<br>";

$url="http://detail.china.alibaba.com/offer/1235158006.html";


$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13');
$pagie = curl_exec($curl);
curl_close($curl);



$html=str_get_html($pagie);

echo "html lenght : ".strlen($html)."<br>";

foreach($html->find('div[id=J_DetailInside]') as $element) {
    echo("result : ".$element->innertext);
    }
?>

顺便说一句, div[id=J_DetailInside] 似乎获取太多

于 2013-05-08T07:34:14.607 回答