Не могу понять в чем проблема

Xagler

Новичок
Пользователь
Май 13, 2020
13
3
3
Вечер добрый
Пишу универсальный парсер прокси
Вот код:
Python:
import asyncio
import requests
import re
import os
import time


def gethtml(site_name):
    try:
        request = requests.get(site_name).content
        html = request.decode('utf8')
        try:
            proxy = re.findall('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{2,5})',html)
            return proxy
        except:
            print('На этой странице: '+site_name+' ничего не нашлось')
    except:
        print('Не удалось подключиться к '+site_name)

f = open('links.txt', 'r') # файл с ссылками на страницы, где есть прокси
p = open('proxys.txt', 'w') # сюда записываю то, что спарсили
N = 0
for line in f:
    res = gethtml(line)
    for prxs in res:
        p.write(prxs + '\n')
        N = N + 1
p.close()
f.close()
print('Спарсили: '+str(N))

Проблема в том, что когда в файле links.txt одна ссылка, то for line in f: выполняется идеально.
Когда больше - выполняется только последний, я буквально неделю назад начал изучать пайтон, да и программирование в общем и целый день сегодня
тренируюсь писать всякого рода проекты, проблема скорее всего банальна, но я в упор не вижу
 

Xagler

Новичок
Пользователь
Май 13, 2020
13
3
3
Ошибка найдена! Кому интересно проблема заключалась в том, что я забыл о том, что в каждой строке файла есть \n - перевод строки, который нужно удалить)
line = line.rstrip()
 

Xagler

Новичок
Пользователь
Май 13, 2020
13
3
3
Путем проб и ошибок я нашёл ошибку, но пока не понимаю почему питон отказывается нормально построчно читать из файла.
Python:
f = open('links.txt', 'r') # файл с ссылками на страницы, где есть прокси
for line in f:
Я создал кортеж из ссылок, которые находятся в текстовом файле и все работает как надо. Почему?
 

Форум IT Специалистов