Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2022, 09:58   #11
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию

Спасибо ffuri
Исправил скрипт так:
Код:
import requests
import time

TIMEOUT = 4

work_url_mas = []

def work_url(url):
    response = requests.get(url=url).status_code
    if response == 200:
        print(f'{url} "Рабочая"')
        work_url_mas.append(url)
    else:
        print(f'{url} "Нерабочая"')


with open("link1.txt", "r") as file:
    lst_url = file.readlines()

for i in lst_url:
    time.sleep(TIMEOUT)
    work_url(i)

for i in lst_url:
    work_url(i)

print('\nПроверка завершена')
with open("out_ok.txt", 'w') as f:
    f.write('\n'.join(work_url_mas))
Почему то пишет что Ссылка не рабочая - хотя они рабочие ?
satfan вне форума Ответить с цитированием
Старый 28.01.2022, 15:44   #12
ffuri
Пользователь
 
Регистрация: 18.01.2022
Сообщений: 11
По умолчанию

какой смысл тут 2 раза перебитать ? )
Цитата:
Сообщение от satfan Посмотреть сообщение
for i in lst_url:
time.sleep(TIMEOUT)
work_url(i)

for i in lst_url:
work_url(i)

а так скрипт все верно отрабаывает
ffuri вне форума Ответить с цитированием
Старый 28.01.2022, 16:21   #13
ffuri
Пользователь
 
Регистрация: 18.01.2022
Сообщений: 11
По умолчанию

Цитата:
Сообщение от satfan Посмотреть сообщение
for i in lst_url:
time.sleep(TIMEOUT)
work_url(i)

for i in lst_url:
work_url(i)
Удали нижний цикл, он лишний

Добавь метод strip, что бы удалять пробелы и отступы, из-за них у тебя такая ошибка выводится:
Код:
for i in lst_url:
    time.sleep(TIMEOUT)
    work_url(i.strip())
Да и если сайты разные, таймаут необязательно ставить
ffuri вне форума Ответить с цитированием
Старый 28.01.2022, 17:00   #14
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию

Всё исправил, как Вы сказали.
В файл out_ok.txt - ничего не записалось
Потом опять ошибка:
Traceback (most recent call last):
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 699, in urlopen
httplib_response = self._make_request(
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 382, in _make_request
self._validate_conn(conn)
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 1010, in _validate_conn
conn.connect()
File "C:\Python\lib\site-packages\urllib3\connection.py", line 416, in connect
self.sock = ssl_wrap_socket(
File "C:\Python\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
File "C:\Python\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Python\lib\ssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(
File "C:\Python\lib\ssl.py", line 1070, in _create
self.do_handshake()
File "C:\Python\lib\ssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение
satfan вне форума Ответить с цитированием
Старый 28.01.2022, 18:24   #15
ffuri
Пользователь
 
Регистрация: 18.01.2022
Сообщений: 11
По умолчанию

satfan, Проверил у себя, все нормально работает. Вот так должен выглядеть код:
Код:
import requests


work_url_mas = []


def work_url(url):
    response = requests.get(url=url).status_code
    if response == 200:
        print(f'{url} "Рабочая"')
        work_url_mas.append(url)
    else:
        print(f'{url} "Нерабочая"')


with open("link1.txt", "r") as file:
    lst_url = file.readlines()

for i in lst_url:
    work_url(i.strip())

with open("out_ok.txt", 'w') as f:
    f.write('\n'.join(work_url_mas))
print('\nПроверка завершена')
Попробуй таймаут поставить, может из-за него проблема. А так причины ошибки "ConnectionResetError: [WinError 10054]" могут быть разные
ffuri вне форума Ответить с цитированием
Старый 30.01.2022, 15:12   #16
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 79
По умолчанию

Спасибо ffuri
Скрипт сработал.
1. В файл - out_ok.txt ничего не записалось ?
2. Выдал ошибки:
Traceback (most recent call last):
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 699, in urlopen
httplib_response = self._make_request(
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 382, in _make_request
self._validate_conn(conn)
File "C:\Python\lib\site-packages\urllib3\connectionpool.py" , line 1010, in _validate_conn
conn.connect()
File "C:\Python\lib\site-packages\urllib3\connection.py", line 416, in connect
self.sock = ssl_wrap_socket(
File "C:\Python\lib\site-packages\urllib3\util\ssl_.py", line 449, in ssl_wrap_socket
ssl_sock = _ssl_wrap_socket_impl(
File "C:\Python\lib\site-packages\urllib3\util\ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\Python\lib\ssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(
File "C:\Python\lib\ssl.py", line 1070, in _create
self.do_handshake()
File "C:\Python\lib\ssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение

During handling of the above exception, another exception occurred:
-------------------------------
Хотя все ссылки прошёл.
satfan вне форума Ответить с цитированием
Старый 02.02.2022, 09:25   #17
ffuri
Пользователь
 
Регистрация: 18.01.2022
Сообщений: 11
По умолчанию

Цитата:
Сообщение от satfan Посмотреть сообщение
2. Выдал ошибки:
Если выскочила эта ошибка, значит на каком то цикле срабатывает исключение, что приводит к принудительному завершению скрипта. Попробуй просто обработать исключение и не добавлять тот url, на котором срабатывает исключение.

Код:
def work_url(url):
    response = requests.get(url=url).status_code
    try:
        if response == 200:
            print(f'{url} "Рабочая"')
            work_url_mas.append(url)
        else:
            print(f'{url} "Нерабочая"')
    except Exception as err:
        print(f'Ошибка {url}: {err}')
Ну а если каждая ссылка обязательно должна обрабатываться, тогда ищи причину ошибки ConnectionResetError: [WinError 10054] и исправляй ее. Сам скрипт правильно работает

Последний раз редактировалось ffuri; 02.02.2022 в 09:30.
ffuri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с синхронизацией работы скрипта lollollollol PHP 15 13.05.2014 22:49
Timer. Считаем время работы скрипта bilibian Общие вопросы Delphi 6 27.02.2014 22:11
Уменьшение скорости работы скрипта amdbodia PHP 3 16.01.2011 20:49
Замедление работы скрипта в чём причина? Alkov74 Microsoft Office Word 2 12.11.2010 20:32
ajax индикатор работы скрипта ssdm JavaScript, Ajax 3 08.04.2010 17:04