Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2019 14:29:25

Goldberg
Зарегистрирован: 2019-01-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

Всем привет, уже запарился я тут со вчерашнего дня и никак не могу взять в толк как мне избавиться от ошибки которую получаю, сначала получал ошибку что, я выходил из диапазона значений при создании списка, теперь когда я создал нормально список pic, и пытаюсь записать значения списка в текстовый файл, получаю ошибку

 #!/usr/local/bin/python3
import requests
import re
print ('Введите ссылку формата "https://habr.com/ru/post/349860/#Regulyarki":')
url = input('')
print ('Введенная ссылка:', url)
def get_parsed_url(url):
    links = 0
    pattern = r"(http[s]?://.*?[\s\?'\"])"
    #patternK = r"(/.*?jpg)"
    try:
        r = requests.get(url,params = None)
        links = r.content.decode('ISO-8859-1')
        parsedUrls = re.findall(pattern, links)
    except SystemError:
        print("Некорректная ссылка, повторите ввод")
    return (parsedUrls)
def grooming():
    pic = []
    urlList = []
    for i in get_parsed_url(url):
        urlList.append(i)
    patternList = r"['\"?]"
    patternPic = r"(http[s]?://.*(?:jpg|gif|png|jpeg))"
    key = 0
    try:
        while key < len(urlList):
            urlList[key] = re.sub(patternList,'', urlList[key])
            if re.findall(patternPic, urlList[key]):
                urlList[key] = str(re.findall(patternPic, urlList[key]))
                try: 
                    pic.append(urlList[key])
                except IndexError:
                    print()
            key +=1
    except SystemError:
        print ("error")
    i = 0
    file = open ('urls.txt', 'w')
    while i < len(pic):
        print(pic[i])
        file.write(str(print(pic[i])) +'\n')
        i += 1
    file.close()
    
grooming()

Отредактировано Goldberg (Апрель 14, 2019 16:52:22)

Офлайн

#2 Апрель 14, 2019 21:28:50

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

 with open('urls.txt','w') as f:
        f.write('\n'.join(pic))
P.S. Что такое grooming, по-Вашему?

Офлайн

#3 Апрель 14, 2019 21:33:26

Goldberg
Зарегистрирован: 2019-01-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

vanvanov
P.S. Что такое grooming, по-Вашему?
В это термин я вкладываю понятие “Приведение в порядок”

P.S. спасибо за помощь, я второй день мучаюсь. Вряд ли бы понял, где была ошибка. Я её не видел.

Отредактировано Goldberg (Апрель 14, 2019 21:34:39)

Офлайн

#4 Апрель 14, 2019 22:50:31

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

Goldberg
В это термин я вкладываю понятие “Приведение в порядок”
А-а, а то я думаю, причем тут уход за лошадьми Но вообще лучше более конкретные названия давать, например, extract_pic.
P.S. спасибо за помощь, я второй день мучаюсь. Вряд ли бы понял, где была ошибка. Я её не видел.
Всегда разбивайте задачу на несколько маленьких задач. Пишите каждую отдельно и проверяйте результат у каждой. Так сразу будет понятно, где ошибка. Хорошо еще также освоить классы - они как раз помогают разбивать крупную операцию на несколько мелких.
Кайф
Вы со смартфона пишите и какая-то программа вставляет спам? Или рекламируете табак? Меня в детстве сводили в музей, где показали легкие курильщика. Курить и не начинал

Офлайн

#5 Апрель 14, 2019 22:54:17

Goldberg
Зарегистрирован: 2019-01-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

vanvanov
Вы со смартфона пишите и какая-то программа вставляет спам? Или рекламируете табак? Меня в детстве сводили в музей, где показали легкие курильщика. Курить и не начинал

Вы правильно поняли, рекламирую табак), курение вредно, я также считаю, но балуюсь переодически

До классов пока не добрался, сам уже начинаю конечно в своем написанном коде путаться, особенно если долго за ним сидишь. Но как говорится, Москва не сразу строилась)

Офлайн

#6 Апрель 14, 2019 23:00:49

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

Лучше бы здоровый образ жизни рекламировали А наживаться за счет здоровья других людей… Как-то негуманно.

Офлайн

#7 Апрель 15, 2019 01:28:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

Пишу парсер картинок и получаю ошибку "NoneNoneNoneNoneNoneNone" в текстовом файле

Goldberg
Вряд ли бы понял, где была ошибка. Я её не видел.
Goldberg
До классов пока не добрался, сам уже начинаю конечно в своем написанном коде путаться
Не сказал бы, что твой код хорошо структурирован.

Во-первых, функции должны называться императивно (имя в виде приказа). А grooming - это существительное. Сразу возникает вопрос “груминг что?”. А вот groom_data() звучит как “причесать данные!”, и сразу понятно при каких обстоятельствах мы вызываем эту функцию (данные не причёсаны) и что мы получим после выполнения функции (данные причёсаны).

Во-вторых, у тебя функции заставляют думать. То есть ты читаешь функцию и не можешь её понять сходу, не подумав хорошенько об алгоритме, не разложив в голове всё на несколько ветвей, - это признак запутанного кода. Когда видишь такой признак, это значит, что надо ещё провести декомпозицию (выделить внутри функции ещё функцию - подфункцию функции), так как, скорее всего, функция переполнена кодом и содержимое другой функции вставлено напрямую в функцию, хотя должно лежать в отдельной функции. Так ты раскладываешь функцию на много функций, пока не получишь ясную цепочку функций, ни одна из которых не заставляет тебя думать об алгоритмах и при этом всё прекрасно и правильно выполняется.

В общем осваивай технологию структурного программирования, которая называется технология разработки “сверху вниз”.
Описание метода “сверху вниз” с примером
Описание разбиения функции на подфункции
Описание приёма декомпозиции


tags: structured paradigm



Отредактировано py.user.next (Апрель 15, 2019 01:32:06)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version