2015-04-23 28 views
0

任何人都可以向我解釋代碼有什麼問題,以及我如何獲取身高值?我正在努力爭取名人的高度。有什麼建議麼?simple_html_dom:試圖在谷歌搜索中查找高度

謝謝。

我的代碼(與捲曲的用戶代理設置更新的建議):

$url='https://www.google.com/webhp?ie=UTF-8#q=ailee+height'; 

//Set CURL user agent 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 

$data = curl_exec($ch); 
curl_close($ch); 

//simple html dom 
require_once('lib/simple_html_dom.php'); 
$html = str_get_html($data); 
$height= $html->find('div[class="_eF"]',0)->innertext; 
echo $height; 

我從上面的代碼空。在這種情況下,我想回:

5' 5" (1.65 m) 
+0

確保您設置您使用看看PHP頁面相同的用戶代理,否則內容會有所不同。將curl中的UA設置爲獲取html,然後將其傳遞給simple-html-dom。 –

+0

我不知道你是怎麼想出這段代碼的,但是我沒有看到你怎麼能夠通過谷歌搜索以編程方式找到名人的身高(沒有比你在例子中使用的更多的線) – lshas

+0

@是否我使用簡單的html dom來解析值 – Calvin

回答

1

問題是curl不處理JavaScript和谷歌將顯示一個不同的網頁時JavaScript被禁用,在這種情況下,div變爲span用不同id

<span class="_m3b">1.65 m</span> 

此外,您使用的鏈接是不是爲我工作。

試試這個:

<?php 
header('Content-Type: text/html; charset=utf-8'); 
$url='https://www.google.pt/search?q=ailee+height&num=10&gbv=1'; 

//Set CURL user agent 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 

$data = curl_exec($ch); 
curl_close($ch); 

require_once('simple_html_dom.php'); 
$html = str_get_html($data); 
$height= $html->find('span[class="_m3b"]',0)->innertext; 
echo $height; 
//1.65 m 
+1

謝謝,佩德羅!建議您將網址更改爲「https://www.google.com/search?q=ailee+height」。不需要改變我的代碼,現在它可以工作。也許我的服務器不能像你一樣訪問原始網址。 – Calvin

+0

非常歡迎@Calvin,GL!請確保將結果編號設置爲較小的值,即:'num = 10',否則該頁面將需要較長時間才能加載。 –