TypeError: объект типа 'NoneType' не имеет len () в Python 3.x - PullRequest
0 голосов
/ 24 сентября 2019

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

from variables import MY_URL , OUT_FILE
import requests
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as ureq
import ssl

ssl._create_default_https_context = ssl._create_unverified_context

import csv

def agarrar_pagina():

    for i in range(1,22):
        uclient = ureq(MY_URL+'categorias/todas/?page={}'.format(i))
        page_html = uclient.read()
        page_soup = soup(page_html, "html.parser")
        contenedores = page_soup.findAll('div', {'class':'cambur'})
        contenedor=[]
        for link in contenedor:
            link = contenedor.findAll('a',['href'])
            ulink = ureq(MY_URL + link)
            page_link = ulink.read()
            ulink = close()
            uclient.close()

            return page_link

Это ошибка

`Traceback (most recent call last):
  File "prueba.py", line 93, in <module>
    main()
  File "prueba.py", line 89, in main
    cajitas = seleccionar_caja(pagina)
  File "prueba.py", line 30, in seleccionar_caja
    page_soup = soup(html, "html.parser")
  File "C:\Users\PC\AppData\Local\Programs\Python\Python37\lib\site-packages\bs4\__init__.py", line 
267, in __init__
    elif len(markup) <= 256 and (
TypeError: object of type 'NoneType' has no len()`

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Функция agarrar_pagina не упоминается в трассировке стека.Я думаю, это потому, что функция agarrar_pagina все время возвращает None.

Это происходит с вашим кодом при зацикливании пустого списка или исправленной функции, если с findall. * 1007 найдено что-либо.*

0 голосов
/ 24 сентября 2019

conatenor = [] - пустой список.Я думаю, что вы намереваетесь использовать конденсаты

for link in contenedores :
            link = contenedores.findAll('a',['href'])
            ulink = ureq(MY_URL + link)
            page_link = ulink.read()
            ulink = close()
            uclient.close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...