DOMXpath как продвинутый парсер или Мой "експеримент"

Игорь Бородихин 2010 M10 8
1319
5
0
0

Вдохновившись идеей пользователя xapon реализовал такое же "облако" ключевых слов на сайтах, зарегистрированных в каталоге iNternets.kz Отличия как в идеологии (данные берутся только для...

Вдохновившись идеей пользователя xapon реализовал такое же "облако" ключевых слов на сайтах, зарегистрированных в каталоге iNternets.kz

Отличия как в идеологии (данные берутся только для зарегистрированных сайтов, в оригинале же авторы сами добавляют сайты; я показываю только ключевики, занимающие больше 10% от общей массы и не показываю URL'ы сайтов, на которых они встречаются), так и в технике (я не возился два дня с парсером, а воспользовался простой и удобной связкой DOMDocument+DOMXpath).

Вот код моего парсера, чтобы все поняли, как это просто :)


<?php

$content = file_get_contents($row['url']);
if(
$content) {
// Get charset
$charset = mb_detect_encoding($content, "utf-8, windows-1251, koi8-r, koi8-u");
if(!
$charset) {
$dom = new DOMDocument();
$dom->loadHTML(strtolower($content));
$xpath = new DOMXpath($dom);
$body = $xpath->query("//meta[@http-equiv='content-type']/@content");
if(
$body->length > 0) {
list(
$type, $charset) = explode("charset=", $body->item(0)->nodeValue);
$charset = trim($charset);
}
if(empty(
$charset)) {
$charset = "windows-1251";
}
}

// Get keywords
if(strcasecmp($charset, "UTF-8") != 0) {
$content = iconv($charset, "UTF-8", $content);
}
$content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
$dom = new DOMDocument();
$dom->loadHTML(mb_strtolower($content, "utf-8"));
$xpath = new DOMXpath($dom);
$body = $xpath->query("//meta[@name='keywords']/@content");
$keywords_str = "";
if(
$body->length > 0) {
$keywords_str = $body->item($i)->nodeValue;
}

if(!empty($keywords_str)) {
$keywords = explode(",", $keywords_str);
if(
count($keywords) == 1) {
$keywords = explode(" ", $keywords_str);
}
}
}
?>

Оцените пост

0

Комментарии

0
Извините, парсер YV сожрал тщательно выверенную разметку :(
0
На красивую разметку можете смотреть здесь: internets.kz
0
Круто :3
Самая крутота в том, что у вас есть каталог сайтов, есть откуда дергать адреса.
Про DOM я вспомнил@догадался уже позже, увы. Зато таки немного понял работу регулярок (совсем чуть-чуть :).
С кодировками тоже был напряг, но я обошелся без извращений типа koi8-r, все равно в последнее время не видел ни одного живого сайта в такой кодировке.
Жаль мета-теги встречаются все реже и реже, а поисковики вообще перестают их учитывать. Так что если развивать идею дальше, нужно анализировать контент страницы и дергать слова оттуда, но тут уже нужно поднапрячь мозг, чтобы грамотно выбрасывать мусор и т.п. Короче, на этом я все забросил (
А вы молодец, ага. Я как раз думал, что прикрутить это к какому-нибудь каталогу было бы круто :3
0
век живи - век учись :) спасибо!
Показать комментарии
Дальше