Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2019 08:14:46

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

Я парсю этот ресурс.Беру заголовок,дату и контент новости.

Выходит следующие сообщение об ошибке:

 Traceback (most recent call last):
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 130, in <module>
    call_all_func(resources)
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 112, in call_all_func
    item_title = get_item_title(item_page,title_rule)
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 35, in get_item_title
    soup = BeautifulSoup(item_page, 'lxml')
  File "C:\Users\Администратор\AppData\Local\Programs\Python\Python37-32\lib\site-packages\bs4\__init__.py", line 267, in __init__
    elif len(markup) <= 256 and (
TypeError: object of type 'NoneType' has no len()
Process finished with exit code 1
Как я понял из ошибки,ошибка содержится в этом участке кода:

 # < Собираем заголовки с страницы.
def get_item_title(item_page,title_rule):
    soup = BeautifulSoup(item_page, 'lxml')
    item_title = soup.find(title_rule[0],{title_rule[1]:title_rule[2]})
    print(item_title)
    return item_title['content']
В title_rule=meta , title_rule=property , title_rule=og:title

Я решил сделать print(item_title) На выводе:

 vesti
кол-во ссылок: 34
http://vesti.kz//khl/269571/
<meta content='Прямая трансляция первого матча "Барыса" в новом сезоне КХЛ' property="og:title"/>
http://vesti.kz//profi/269572/
<meta content='"Я вернусь в Украину чемпионом мира". Деревянченко сделал очередное заявление перед боем с Головкиным' property="og:title"/>
http://vesti.kz//mirfutbol/269569/
<meta content="Криштиану Роналду составил завещание" property="og:title"/>
http://vesti.kz//wta/269568/
<meta content="Путинцева показала лучший результат в карьере и завершила выступление на US Open " property="og:title"/>
http://vesti.kz//mirfutbol/269566/
<meta content="Месси получил приз фонда Папы Римского " property="og:title"/>
http://vesti.kz//amateur/269565/
<meta content="Казахстанский боксер рассказал о подготовке к ЧМ и включил Узбекистан в число главных соперников" property="og:title"/>
http://vesti.kz//national/269564/
<meta content="Сборная Казахстана начала подготовку к матчам с Кипром и Россией в отборе на Евро-2020" property="og:title"/>
http://vesti.kz//sportsout/269563/
<meta content="Китайский миллиардер из рейтинга Forbes передал Головкину эстафету в челлендже" property="og:title"/>
http://vesti.kz//uefa/269509/
<meta content='Кто из звезд "Манчестер Юнайтед" может приехать в Казахстан на матч с "Астаной" в Лиге Европы' property="og:title"/>
http://vesti.kz//france/269562/
<meta content="ПСЖ подписал трехкратного победителя Лиги чемпионов и отдал в аренду чемпиона мира" property="og:title"/>
http://vesti.kz//amateur/269561/
<meta content="Василий Левит оценил свою форму и озвучил задачу на ЧМ-2019 по боксу " property="og:title"/>
http://vesti.kz//mirfutbol/269560/
<meta content="ФИФА назвала трех претендентов на награду лучшему футболисту года" property="og:title"/>
http://vesti.kz//profi/269547/
Traceback (most recent call last):
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 130, in <module>
    call_all_func(resources)
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 112, in call_all_func
    item_title = get_item_title(item_page,title_rule)
  File "C:/Users/Администратор/PycharmProjects/Task/parser.py", line 35, in get_item_title
    soup = BeautifulSoup(item_page, 'lxml')
  File "C:\Users\Администратор\AppData\Local\Programs\Python\Python37-32\lib\site-packages\bs4\__init__.py", line 267, in __init__
    elif len(markup) <= 256 and (
TypeError: object of type 'NoneType' has no len()
Process finished with exit code 1
После вывода (если я правильно понял) код ругается на эту ссылку.

Как решить эту ошибку? По ошибке мне понятно только

что объект типа ‘NoneType’ не имеет len ()

Отредактировано r4khic (Сен. 3, 2019 08:16:03)

Офлайн

#2 Сен. 3, 2019 09:13:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

r4khic
Наблюдаю я за вами и у меня сложилось стойкое ощущение, что у вас недостаточно опыта и знаний, чтобы решать задачи, которые вы пытаетесь решать. У вас элементарного набора новичка нет, какой вам парсинг сайтов? Вы же сейчас не делаете свою работу, за вас её делает форум. Если это то, за что вы получаете деньги - то вы здорово устроились, это называется паразитизм. Если ваши задачи учебные, и вы таким образом пытаетесь набраться опыта, то, повторю, вы взялись решать задачи, которые вам не по зубам, займитесь для начала чем-нибудь по-проще.



Офлайн

#3 Сен. 3, 2019 09:50:25

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

FishHook
r4khicНаблюдаю я за вами и у меня сложилось стойкое ощущение, что у вас недостаточно опыта и знаний, чтобы решать задачи, которые вы пытаетесь решать. У вас элементарного набора новичка нет, какой вам парсинг сайтов? Вы же сейчас не делаете свою работу, за вас её делает форум. Если это то, за что вы получаете деньги - то вы здорово устроились, это называется паразитизм. Если ваши задачи учебные, и вы таким образом пытаетесь набраться опыта, то, повторю, вы взялись решать задачи, которые вам не по зубам, займитесь для начала чем-нибудь по-проще.
Эти задачи строго в учебных целях.

Офлайн

#4 Сен. 3, 2019 09:53:10

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

FishHook
r4khicНаблюдаю я за вами и у меня сложилось стойкое ощущение, что у вас недостаточно опыта и знаний, чтобы решать задачи, которые вы пытаетесь решать. У вас элементарного набора новичка нет, какой вам парсинг сайтов? Вы же сейчас не делаете свою работу, за вас её делает форум. Если это то, за что вы получаете деньги - то вы здорово устроились, это называется паразитизм. Если ваши задачи учебные, и вы таким образом пытаетесь набраться опыта, то, повторю, вы взялись решать задачи, которые вам не по зубам, займитесь для начала чем-нибудь по-проще.
Я по своему опыт заметил,когда решаю большие задачи не для новичков.Я получаю большие знания

Офлайн

#5 Сен. 3, 2019 10:03:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

r4khic
Эти задачи строго в учебных целях.

Смотрие, вы получили object of type ‘NoneType’ has no len(). Значит, где-то на предыдущем этапе вызов функции, который как вы ожидали вернет строку или список вернул None. Например, функция поиска тега в дереве тегов не нашла ничего и вернула Ничего. Это я вам сейчас рассказал основы основ. Вы должны бы знать это самостоятельно. Получается, что ваша ошибка сугубо логическая - программа делает не то, что вы от нее ждете. Но это же ваша программа и только вы можете знать, что вы от неё ждетёте. Но вы, почему то, впадаете в ступор при сообщении об ошибке, которая вам как автору программы должна показать, причины её возникновения. Я отсюда делаю вывод, что код, который вы нам показываете, это не ваш код, вы его не писали. Вы копипастите какие-то примеры из интернета, но не понимаете, как они работают. А это значит, что вы выбрали для себя слишком высокий уровень учебных задач. Сначала, надо научиться решать задачи по-проще. Парсинг сайтов это вообще искуство и без базовых знаний, хотябы уровня “почему возникает ошибка ‘NoneType’ не имеет len ()” не имеет ни какого смысла туда соваться. Программирование, это вообще на 95% отладка кода, а вы не умеете не только отлаживать, у вас нет понимания о потоке выполнения программы и стеке вызовов. Это потому, что вы не писали до этого никакого кода.



Офлайн

#6 Сен. 3, 2019 10:04:35

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

r4khic
Я по своему опыт заметил,когда решаю большие задачи не для новичков.Я получаю большие знания
Ваши большие знания заметны прям из далека. Смотришь на вас и сразу думаешь, какие большие знания у этого человека.



Офлайн

#7 Сен. 3, 2019 11:03:25

r4khic
Зарегистрирован: 2019-07-23
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

FishHook
FishHook
ахахахх благодарю за БОЛЬШИЕ знания

Офлайн

#8 Сен. 3, 2019 11:42:17

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

TypeError: object of type 'NoneType' has no len()

None это зло, вот тут это уже обсуждалось: http://python.su/forum/topic/37039/?page=1#post-200655



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version