2014-05-21 67 views
0

我想獲取google.com的元描述/關鍵字,但最終得到了一個空數組。用簡單的html dom獲取元素1.5 2014 php

<?php 
include "simple_html_dom.php"; 
$url = isset($_POST['url']) ? $_POST['url'] : ''; // this would be http://www.google.com 
if(!empty($url) && @file_get_contents($url) == true) { 
    $html = new simple_html_dom(); 
    $html->load_file($url); //put url or filename in place of xxx 
    $title = $html->find('title', 0)->plaintext; 
    //echo $title; 

    $descr = $html->find("meta[name='description']", 0); 
    var_dump($descr); // NULL 

} 
?> 

$title正在得到確定,但說明一個問題,不明白爲什麼。 我也試過在Fatal error: Call to a member function attr() on a non-object

$descr = $html->find("meta[name='description']", 0)->getAttribute('content'); 
$descr = $html->find("meta[name='description']", 0)->content; 

結果Notice: Trying to get property of non-object

$descr = $html->find("meta[name='description']", 0)->attr('content'); 

結果結果爲Fatal error: Call to a member function getAttribute() on a non-object

所有這些錯誤,我相信他們是因爲元描述無法找到,儘管事實上,如果你打開在谷歌.com上查看源代碼,你會發現這是你看到頭標後的第一件事 請幫忙我在這我簡單的HTML DOM的noob。非常感謝。

回答

1

這應該給你想要的東西:

<?php 
include "simple_html_dom.php"; 
$url = isset($_POST['url']) ? $_POST['url'] : ''; // this would be http://www.google.com 
if(!empty($url)) { 
    $html = file_get_html($url); 
    $title = $html->find('title', 0)->plaintext; 
    echo $title . "\n";; 

    $descr = $html->find("meta[name='description']", 0); 
    echo $descr . "\n"; 

} >

輸出是

Google 
<meta content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for." name="description"> 
1

你可以得到的關鍵詞是這樣的:

$oHTML = str_get_html($remote_html); 
$arElements = $oHTML->find("meta[name=keywords]"); 
echo $arElements[0]->content; 
+0

?不工作,甚至沒有工作關鍵字。我得到'注意:未定義的偏移量:0' +'注意:試圖獲取非對象的屬性' – user3650099

+0

您能解析HTML文件的其餘部分(標題,Divs ...)嗎?或者這是否也會導致錯誤? – user3660133

+0

如果我在'$ html-> load_file($ url)之後做'echo $ html;'''我可以看到網頁。它認爲它只適用於標題,標題正在被解析。 – user3650099