Найти - Пользователи
Полная версия: Тема логирование (обучение)
Начало » Python для новичков » Тема логирование (обучение)
1
davidber
Друзья помогите пожалуйста, есть задание по обучению:
Вам было поручено отобрать сайты которые не работают без VPN (не удаётся подключится), а так же те, ответ на запрос к которым не содержит нужно информации (отличных от 200).
Сайты нужно разобрать по трем файлам:
Все сайты к которым возможно сделать запрос и получить ответ 200 должны записываться в отдельный лог-файл (success_responses.log).
Все сайты к которым возможно сделать запрос и получить ответ отличный от 200 должны записываться в отдельный лог-файл (bad_responses.log).
Все сайты к которым возможно сделать запрос, но получить ответ от них невозможно, должны записываться в отдельный лог-файл (blocked_responses.log).
ZerG
ну так простейшая же задача
Давайте код ваш посомтрим где в запнулись
davidber
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’})

ПОЧЕМУ он не пишет в файлы логов?
ZerG
 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB