Часто возникает потребность в копировании больших(?) объемов информации с других сайтов и последующим её разбором (по различным файлам, собственным страницам и т.д.). Часто эти методы используются при сборе информации для сателлитов, да и не только!
Для наглядного примера поставим перед собой задачу - определить тИЦ заданного сайта.
Для этого необходимо выполнить следующую последовательность действий:
1. Получить полный код страницы со значением тИЦ для заданного сайта;
2. Разобрать полученную страницу и изъять из неё тИЦ;
Информацию тянуть будем с такого урла:
http://search.yaca.yandex.ru/yca/cy/ch/site.ru/
где site.ru - урл, для которого необходимо получить тИЦ.
Использовать для этого будем РНР.
1. Получение чужой (и не только) страницы в РНР происходит с помощью функции: file_get_contents, куда передаётся УРЛ нужной страницы, на выходе - содержимое страницы.
В нашем случае это будет выглядеть так:
$page = file_get_contents( 'http://search.yaca.yandex.ru/yca/cy/ch/site.ru/' );
т.е. полученную информацию (полный исходник ХТМЛ страницы) мы сохранили в переменную $page.
2. Затем открываем вручную исходник этой HTML страницы и смотрим где находится необходимая нам информация. В нашем случае она находится внутри анкорного тэга. Пишем шаблон для неё:
$arr = array();
preg_match( '/<a href="[^"]+" title="[^"]+">([0-9]+)<\/a>/', $page, $arr );
Таким образом, мы изъяли число (тИЦ) находящееся в анкорном тэге. Круглые скобки отвечают за то, что попадёт в выходную выборку (массив $arr, структуру которого можно просмотреть так: "print_r( $arr )" ).
Остаётся только вывести его на экран (или куда Вам необходимо): "echo $arr[1];"
Приведу конечный вариант скрипта:
$page = file_get_contents( 'http://search.yaca.yandex.ru/yca/cy/ch/' . $_SERVER['QUERY_STRING'] . '/' );
$arr = array();
preg_match( '/<a href="[^"]+" title="[^"]+">([0-9]+)<\/a>/', $page, $arr );
echo $arr[1];
$_SERVER['QUERY_STRING'] - подставлено для удоства использования, чтобы можно было к скрипту обращаться так: script.php?mysite.ru
Хотелось бы отметить то, что работать такой метод будет далеко не всегда. Только для тех ресурсов, которые не описаны в Я.Каталоге, потому как для них выдаётся совершенно другая страница, для неё необходимо писать отдельный шаблон.
Для остальных будет работать. Ну это же всё-таки в качестве примера!
Надеюсь суть того где вот такое можно использовать Вы уловили!
Будут ли какие-то замечания, вопросы или пожелания к дальнейшим постам?
Показаны сообщения с ярлыком парсинг сайтов. Показать все сообщения
Показаны сообщения с ярлыком парсинг сайтов. Показать все сообщения
понедельник, 9 июля 2007 г.
Подписаться на:
Сообщения (Atom)