Мне нужно было искать файл для URL -адресов и генерировать отчет об их статусе. Поэтому я создал Густаво, чтобы сделать работу для меня.
Get-url-status (gus) текст как визуал-выпуск (tavo)
Конечно, имя может быть немного банальным, но это делает меня счастливым Так что я придерживаюсь этого. Мне также нравится представлять Гаса как старый сантехник, который проверяет все соединения URL в документе …
Гас можно вызвать из командной строки
python gus.py example.html
или же от раковины Python
>>> import gus >>> gus.tavo('example.html')
Как работает Гас?
- Файл в предоставленном месте открывается, и содержимое сохраняется в виде строки.
- Регулярное выражение соответствует каждому экземпляру HTTP или HTTPS, и результаты сохраняются в виде списка.
- Для каждого элемента в списке производится подключение к HTTP – запрашивая только заголовок – и возвращается код ответа HTTP.
- Возвращенный код соответствует статусу: 2xx помечен как [хорошо]; 4xx помечен [Warn]; И все остальное по умолчанию [UNKN].
- Весь список URL -адресов, кодов и их статуса печатается на консоли, а также записывается в файл.
Я знал, что хочу, чтобы письменный выходной файл был окрашен, поэтому я провел некоторые исследования по созданию богатых текстовых файлов. Есть много отличной информации в www.pindari.com Но, к сожалению, мое решение оказалось немного немного хакерским, чем предполагалось.
Сначала я открыл Textedit и создал output.rtf с четырьмя строками текста. Каждому строке дали свой цвет (по умолчанию, серый, зеленый и красный). Затем у меня был Python открыть файл, прочитать содержимое и распечатать все это на консоли. Затем я скопировал все до первой строки текста и сохранил его до постоянной. То, что осталось, были линии текста и цветовые коды, которые мне были нужны! Я скопировал их в функцию, которая добавила бы соответствующий код к строке URL в зависимости от возвращенного статуса HTTP.
for url in list: url = check_nested(url) code = check_status_code(url) color = r'\cf2' #grey status = 'UNKN' if code[0] == '2': color = r'\cf4' #green status = 'GOOD' elif code[0] == '4': color = r'\cf3' #red status = 'WARN' checked.append(f"{color} [{code}] [{status}] {url}")
Без сомнения, есть много возможностей для будущих улучшений, но в целом я до сих пор доволен результатами.
Если вам вообще заинтересовано, проверьте репо:
Slaterslater/Gustavo
Распечатайте отчет о всех URL -адресах HTTP в файле
Оригинал: “https://dev.to/slaterslater/introducing-gustavo-1n3b”