Поиск на сайте внешних ссылок и их анкоров

Задача: по файлу sitemap.xml обойти все станицы сайта и найти все внешние ссылки, составить таблицу с адресами станиц и найденными на них url c анкорами.

Решение:

Лучше использовать локальный сервер (denwer, mamp) т.к. процесс ресурсоемкий и обычный хостинг его не потянет.

Скрипт не учитывает «закрытые» ссылки с rel="nofollow" и <noindex>.

<?php
// Локаль.
setlocale(LC_ALL, 'ru_RU');
date_default_timezone_set('Europe/Moscow');
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_http_output('UTF-8');
mb_language('uni');

// Отключение лимитов памяти и времени.
ini_set('memory_limit', '2000M');
set_time_limit(0);

$domеn = 'snipp.ru';
$pt = '/<a (.*?)href=[\"\']([a-z0-9]+)\:\/\/(?!'.$domеn.')(.*?)\/?(.*?)[\"\'](.*?)>(.*?)<\/a>/i';

$xml = simplexml_load_file('http://snipp.ru/sitemap');
foreach ($xml->url as $row) {
	$url = strval($row->loc);
	$html = file_get_contents($url);
	preg_match_all($pt, $html, $matches);
	if (!empty($matches)) {
		foreach ($matches[4] as $i => $ur) {
			if (!strstr($ur, $domеn)) {
				$out .= '
				<tr>
					<td>' . $url . '</td>
					<td>' . $matches[2][$i] . '://' . $ur . '</td>
					<td>' . $matches[6][$i] . '</td>
				</tr>';
			}
		}
	}
}

echo '<table cellspacing="0" border="1" cellpadding="5">' . $out . '</table>';
PHP

Результат:

19.04.2018, обновлено 10.09.2019 486

Поделится

Другие публикации

Сборник рекомендаций по настройке сайта помогающий исключить проблемы при индексировании поисковыми системами.
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
Турбо-страницы позволяют пользователям посмотреть легкую версию сайта, которая загружается быстрее в десятки раз, а...
Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP...
Если требуется быстро сделать файл карты сайта, поможет программа «Xenu». Также она выявит битые ссылки и недоступные...
В статье приведен пример формы и php скрипта для безопасной загрузки файлов на сервер, метод отправки файлов через...