2013-05-08 108 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

相關問題