@Kirill-Gorelov
С ума с IT

Как собрать все ссылки на сайте, php?

Ребят. Как собрать все ссылки, которые есть на сайте, а так же файлы, картинки и другие?
Регуряное выражение уже написал.
А вот как это собрать с каждой странице, у меня не получается. Потому что надо учесть что бы не было дубликатов и что бы по каждой ссылке парсер прошелся одни раз.
Тут надо скорее всего рекурсивно проходить? Если да, то я что-то запутался в этой рекурсии.
Может уже кто готовое знает или уже кто писал на php?

ВОт что я пробовал написать:
getURL() - функция, которая скачивает файл. Я ее не стал сюда вписывать.
$arr_link = array();
function get_first_link($site){
  $result = getURL($site); 
    $result = implode($result);
    if($result === false){continue;}
    
    preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/", $result, $matches);
  $urls = $matches[1]; 
   $urls  = array_unique($urls);
  foreach($urls as $val){
    //  echo $val."<br />";  // вывожу все ссылки
    $link = parse_url($val);
    if(empty($link['host'])){
    //   $flag =  in_array($val, $arr_link); 
      //  if($flag === false){
        $arr_link[] = SITE.$val;
      //  echo SITE.$val."<br />";
       // }
       //get_link($site.$val);
    }
  }
  return $arr_link;
}

function get_second_link($arr){
    foreach ($arr as $val) {
          $result = getURL($val); 
    $result = implode($result);
//print_r($result);
 preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/", $result, $matches);
  $all[] = $matches[1];
    }
    
    $urls = $all; 
   $urls  = array_unique($urls);
   print_r($urls);

}
// print_r(get_first_link(SITE));
$n = get_first_link(SITE);
get_second_link($n);
  • Вопрос задан
  • 1875 просмотров
Решения вопроса 1
Ahen
@Ahen
Универсальный дилетант
Вот этот парсер использовал, легко переписать и изменить шаблон с xml на нужный тебе. Достаточно быстро прогуливается по сайту, собирает ссылки и редиректы поддерживает. Рекурсия как-раз.

https://www.plop.at/en/xml-sitemap.html
https://github.com/iprodev/PHP-XML-Sitemap-Generator (вроде как модифицированная версия)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы