Как извлечь заголовок и мета-описание с помощью простого парсера HTML DOM PHP?

Как я могу извлечь страницы title и мета description С помощью PHP простой парсер HTML DOM?

мне просто нужно название страницы и ключевые слова в обычный текст.

9 ответов


Я просто взглянул на парсер HTML DOM, попробуйте:

$html = new simple_html_dom();
$html->load_file('xxx'); //put url or filename in place of xxx
$title = $html->find('title');
echo $title->plaintext;

$descr = $html->find('meta[description]');
echo $descr->plaintext;

$html = new simple_html_dom();
$html->load_file('some_url'); 

//To get Meta Title
$meta_title = $html->find("meta[name='title']", 0)->content;

//To get Meta Description
$meta_description = $html->find("meta[name='description']", 0)->content;

//To get Meta Keywords
$meta_keywords = $html->find("meta[name='keywords']", 0)->content;

Примечание:имена из мета-тегов чувствительны к регистру!


$html = new simple_html_dom();
$html->load_file('http://www.google.com'); 
$title = $html->find('title',0)->innertext;

$html->find('title') вернет массив

Так что вы должны использовать $html->find('title',0), как и мета[описание]


взятый из решения LeiXC выше, вам нужно использовать простой класс html dom:

$dom = new simple_html_dom();
$dom->load_file( 'websiteurl.com' );// put your own url in here for testing
$html = str_get_html($dom);
$descr = $html->find("meta[name=description]", 0);
$description = $descr->content;
echo $description;

Я тестировал этот код и да, он чувствителен к регистру (некоторые мета-теги используют заглавную D для описания)

вот некоторые ошибки проверки орфографических ошибок:

if( is_object( $html->find("meta[name=description]", 0)) ){
    echo $html->find("meta[name=description]", 0)->content;
} elseif( is_object( $html->find("meta[name=Description]", 0)) ){
    echo $html->find("meta[name=Description]", 0)->content;
}

$html = new simple_html_dom();
$html->load_file('xxx'); 
//put url or filename in place of xxx
$title = array_shift($html->find('title'))->innertext;
echo $title;
$descr = array_shift($html->find("meta[name='description']"))->content;
echo $descr;

правильный ответ:

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

приведенный выше код получает html в формат объекта, затем метод find ищет мета-тег с описанием имени, и, наконец, вам нужно вернуть значение содержимого мета-тега, а не внутреннего или открытого текста, как указано другими.

Это было протестировано и использовано в live-коде. Лучший


вы можете использовать php-код и так просто знать. как здесь

$результат = 'site.com'; $tags = get_meta_tags ("html/".$ result);


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

Я нашел простой способ взять описание

$html = new simple_html_dom(); 
$html->load_file('your_url');
$title = $html->load('title')->simpletext; //<title>**Text from here**</title>
$description = $html->load("meta[name='description']", 0)->simpletext; //<meta name="description" content="**Text from here**">

Если ваша строка содержит дополнительные пробелы, попробуйте это

$title = trim($title);
$description = trim($description);