Форум сайта python.su
Друзья помогите пожалуйста, есть задание по обучению:
Вам было поручено отобрать сайты которые не работают без VPN (не удаётся подключится), а так же те, ответ на запрос к которым не содержит нужно информации (отличных от 200).
Сайты нужно разобрать по трем файлам:
Все сайты к которым возможно сделать запрос и получить ответ 200 должны записываться в отдельный лог-файл (success_responses.log).
Все сайты к которым возможно сделать запрос и получить ответ отличный от 200 должны записываться в отдельный лог-файл (bad_responses.log).
Все сайты к которым возможно сделать запрос, но получить ответ от них невозможно, должны записываться в отдельный лог-файл (blocked_responses.log).
Офлайн
ну так простейшая же задача
Давайте код ваш посомтрим где в запнулись
Офлайн
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)
Офлайн
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)
Офлайн