2013-05-08 35 views
0

我试图在两个不同的中国购物网站的“产品页面”中提取主图像。PHP的Simple-HTML-DOM适用于一个URL,但不适用于其他

网站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); 
    } 
?> 

我一直想任何事情来得到它正确,但没有成功而工作, 任何帮助将非常感谢!

+2

有可能是第二个网站上的格式错误的HTML – 2013-05-08 07:24:15

+0

谢谢你,你们都帮助过我。 – spelltox 2013-05-08 10:23:42

回答

2

的原因是,第二个网站重定向如果 你必须设置用户代理,卷曲这样没有得到任何的用户代理为127.0.0.1:

<?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]似乎以获取太多

+0

感谢小猫:-)我要去检查一下是否有效。还有一个问题可以帮助我更好地理解这个过程:你怎么知道这个站点不喜欢我的useragent,因此重定向到127.0.0.1?你使用一些工具吗? – spelltox 2013-05-08 09:50:28

+0

工程就像一个魅力! – spelltox 2013-05-08 10:03:43

+0

好吧,首先我看到PHP警告file_get_contents失败,所以我检查与卷曲/ wget的网址,它似乎是好的,所以useragent或其他serverside检查最有可能是原因 - 我检查与telnet,并意识到它的useragent – igor 2013-05-08 11:21:23

相关问题