О web-разработке
и даже немного больше...

Извлекаем все ссылки из веб-страницы

Извлекаем все ссылки из веб-страницыРассмотрим простой пример использования регулярных выражений, а так же cURL-а, для извлечения всех ссылок с веб-страницы (либо файла). Для этих целей необходимо чтобы на вашем сервере была включена поддержка cURL, в ином случае будут использоваться функции fopen/fget/fclose. Использование cURL-а в для этих целей предпочтительнее, так как он по шустрее в работе, и способен имитировать браузер пользователя, посредством отправки HTTP заголовков, что весьма немаловажно.

Стоит обратить внимание на то, что ниже описанный код возвращает все ссылки, в том числе и ссылки на изображения, на файлы стилей и т.п.

Код:

<?php

$url = 'https://href.kz';

$var = fread_url($url);
            
    preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
                    "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/", 
                    $var, &$matches);
        
    $matches = $matches[1];
    $list = array();

    foreach($matches as $var)
    {    
        print($var."<br>");
    }


// Функция fread_url вернет содержимое веб-страницы
// В случае, если CURL не установлен будут использованы функции fopen / fgets

    function fread_url($url,$ref="")
    {
        if(function_exists("curl_init")){
            $ch = curl_init();
            $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ".
                          "Windows NT 5.0)";
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
            curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
            curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
            curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
            curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
            curl_setopt( $ch, CURLOPT_URL, $url );
            curl_setopt( $ch, CURLOPT_REFERER, $ref );
            curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
            $html = curl_exec($ch);
            curl_close($ch);
        }
        else{
            $hfile = fopen($url,"r");
            if($hfile){
                while(!feof($hfile)){
                    $html.=fgets($hfile,1024);
                }
            }
        }
        return $html;
    }

?>

Есть и другой способ получения всех ссылок на странице, для реализации которого используется класс DOMDocument. Класс DOMDocument находится в расширении DOM для PHP, начиная с версии PHP5, возможности его использования так же хорошо задокументированы в документации.

Опубликован: 26.02.2013 г.

См. также:

Редакторы кода для PHP
Как просмотреть время загрузки страницы в PHP?
Генерация QR-кода в PHP
Загрузка файлов на сервер посредством Ajax
Импорт записей из Excel в WordPress
Парсинг XML в PHP
Установка IonCube на XAMPP
Создание PDF файлов в PHP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта