Мой первый блин комом первое знакомство с PHP и первый пост на хабре.
С недавних пор все интернет провайдеры должны закрывать запрещенные сайты. Ежедневно Роскомнадзор предоставляет нам список запрещенных сайтов в формате xml. Выгруженный файл имеет не нужную для меня информацию (дата постановления о закрытии сайта, орган кем принято решение о закрытии) и не удобное для чтения и дальнейшей работы форматирование, поэтому была поставлена задача распарсить файл в удобный для чтения вид, а также получать из файла список запрещенных сайтов без лишней информации.
Пример файла XML
Для решения этой задачи мне показался ближе язык PHP поскольку занимаюсь в основном вебом. Сразу оговорюсь, до этого момента ничего не писал на PHP и других языках, моя основная работа это верстка.
Создав простую страницу html я разместил в ней input чтобы пользователь мог выбирать какой файл парсить.
С недавних пор все интернет провайдеры должны закрывать запрещенные сайты. Ежедневно Роскомнадзор предоставляет нам список запрещенных сайтов в формате xml. Выгруженный файл имеет не нужную для меня информацию (дата постановления о закрытии сайта, орган кем принято решение о закрытии) и не удобное для чтения и дальнейшей работы форматирование, поэтому была поставлена задача распарсить файл в удобный для чтения вид, а также получать из файла список запрещенных сайтов без лишней информации.
Пример файла XML
/><![CDATA[http://xxxxxxxxxxxxx]]><![CDATA[xxxxxxxxxxxxxx]]>xx.xx.xx.xx
Для решения этой задачи мне показался ближе язык PHP поскольку занимаюсь в основном вебом. Сразу оговорюсь, до этого момента ничего не писал на PHP и других языках, моя основная работа это верстка.
Создав простую страницу html я разместил в ней input чтобы пользователь мог выбирать какой файл парсить.
Теперь скрипт должен проверить выбрал ли пользователь файл для обработки:
if ( isset($_FILES["dump"]) )
Дальше код самого скрипта
$fp = fopen("urls.txt", "w");
$xml = simplexml_load_file($_FILES["dump"]["tmp_name"]);
foreach ($xml->content as $content) {
echo "<li><a href=".$content->url." target='blank' >".$content->url."</a><br />Решение от ".$content->decision[date]." получено от органа ".$content->decision[org]."</li><br />";
fwrite($fp, $content->url."\r\n");
}
fclose($fp);
Для таких же как я новичков в PHP расскажу что делает этот скрипт.
$fp = fopen("urls.txt", "w");
Открывает файл urls.txt для записи, если такого файла нет, создает его.
$xml = simplexml_load_file($_FILES["dump"]["tmp_name"]);
Открывает выбранный пользователем XML Файл и позволяет работать с ним как с объектом.
foreach ($xml->content as $content)
echo "".$content->url."
Решение от ".$content->decision[date]." получено от органа ".$content->decision[org]."
Выбирает в файле XML блоки content и выбирает из него то что мне нужно, а именно ссылку, дату решения о закрытии и орган принявший решение.
Затем скрипт выводит ссылки в виде нумерованного списка.
fwrite($fp, $content->url."\r\n");
Записывает каждую полученную ранее ссылку в файл urls.txt
Этот функционал мне потребовался для другого моего скрипта, текстовый файл содержит только ссылки без дат и органов принявших решение о закрытии.
Закрываем файл urls.txt.
fclose($fp);
Пример парсера можете посмотреть здесь, а те у кого есть файл выгрузки от Роскомнадзора могут даже попробовать его в деле.
P.S XML Файл не выкладываю здесь в связи с законами о быстрой блокировке сайтов, не хочу чтобы хабр закрывали из-за этих запрещенных ссылок.