Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2024 18:43:44

davidber
Зарегистрирован: 2024-04-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Тема логирование (обучение)

Друзья помогите пожалуйста, есть задание по обучению:
Вам было поручено отобрать сайты которые не работают без VPN (не удаётся подключится), а так же те, ответ на запрос к которым не содержит нужно информации (отличных от 200).
Сайты нужно разобрать по трем файлам:
Все сайты к которым возможно сделать запрос и получить ответ 200 должны записываться в отдельный лог-файл (success_responses.log).
Все сайты к которым возможно сделать запрос и получить ответ отличный от 200 должны записываться в отдельный лог-файл (bad_responses.log).
Все сайты к которым возможно сделать запрос, но получить ответ от них невозможно, должны записываться в отдельный лог-файл (blocked_responses.log).

Офлайн

#2 Апрель 18, 2024 21:39:52

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2592
Репутация: +  61  -
Профиль   Отправить e-mail  

Тема логирование (обучение)

ну так простейшая же задача
Давайте код ваш посомтрим где в запнулись



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Апрель 18, 2024 21:57:36

davidber
Зарегистрирован: 2024-04-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Тема логирование (обучение)

import bs4
import requests as rq
import logging

logger = logging.getLogger('RequestsLogger')

sites = ['https://www.youtube.com/', 'https://instagram.com', 'https://wikipedia.org', 'https://yahoo.com',
'https://yandex.ru', 'https://whatsapp.com', 'https://twitter.com', 'https://amazon.com', 'https://tiktok.com',
'https://www.ozon.ru']


for site in sites:
try:
response = rq.get(site, timeout=3)
soup = bs4.BeautifulSoup(response.text, ‘lxml’)
print(response)
except:
print('NO CONNECTION')

if response.status_code == 200:
logging.basicConfig(filename=“success_responses.log”, level=logging.INFO)
logger.info(f'Info: {site}', extra={“response”: response.text})
elif response.status_code != 200:
logging.basicConfig(filename=“bad_responses.log”, level=logging.WARNING)
logger.warning(f'{site}', extra={“response”: response.text})
else:
logging.basicConfig(filename=“blocked_responses.log”, level=logging.ERROR)
logger.error(f'Error: {site}', extra={“response”: ‘NO CONNECTION’})

ПОЧЕМУ он не пишет в файлы логов?

Отредактировано davidber (Апрель 18, 2024 22:51:20)

Офлайн

#4 Апрель 19, 2024 14:01:32

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2592
Репутация: +  61  -
Профиль   Отправить e-mail  

Тема логирование (обучение)

 import requests
import logging
def check_websites(websites_list):
  """
  Проверяет доступность сайтов из списка и записывает результаты в лог-файлы.
  Args:
    websites_list: список ссылок на сайты (строки)
  Returns:
    None
  """
  # Настройка логгера
  logging.basicConfig(
    format='%(asctime)s - %(levelname)s - %(message)s',
    level=logging.INFO,
    filename='website_checker.log',
    filemode='w'
  )
  # Создание лог-файлов
  success_log = open('success_responses.log', 'w')
  bad_responses_log = open('bad_responses.log', 'w')
  blocked_responses_log = open('blocked_responses.log', 'w')
  # Проверка сайтов
  for website in websites_list:
    try:
      response = requests.get(website)
      if response.status_code == 200:
        # Успешный ответ
        logging.info(f"Сайт {website} доступен")
        success_log.write(f"{website}\n")
      else:
        # Неуспешный ответ
        logging.info(f"Сайт {website} не доступен (код ответа: {response.status_code})")
        bad_responses_log.write(f"{website} ({response.status_code})\n")
    except requests.exceptions.RequestException:
      # Невозможно получить ответ
      logging.info(f"Сайт {website} недоступен (невозможно получить ответ)")
      blocked_responses_log.write(f"{website}\n")
  # Закрытие лог-файлов
  success_log.close()
  bad_responses_log.close()
  blocked_responses_log.close()
# Пример использования
websites_list = [
  "https://www.google.com",
  "https://www.facebook.com",
  "https://www.youtube.com",
  "https://www.not-existing-website.com",
  "https://www.blocked-website.com",
]
check_websites(websites_list)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version