Estou usando o BeautifulSoup e analisando alguns HTMLs.
Estou obtendo alguns dados de cada HTML (usando o loop for) e adicionando esses dados a uma determinada lista.
O problema é que alguns dos HTMLs têm formato diferente (e eles não têm os dados que desejo neles) .
Portanto, estava tentando usar o tratamento de exceções e agregar valor null
à lista (devo fazer isso, pois a sequência de dados é importante).
Por exemplo, tenho um código como:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
e alguns dos links não têm nenhum <dd class='title'>
, então o que eu quero fazer é adicionar string null
à lista.
O erro aparece:
list index out of range.
O que fiz tentei adicionar algumas linhas como esta:
if not dlist[1]:
newlist.append('null')
continue
Mas não dá certo. Ainda mostra erro:
list index out of range.
O que devo fazer sobre isso? Devo usar o tratamento de exceções? ou existe alguma maneira mais fácil?
Alguma sugestão? Qualquer ajuda seria muito boa!
fonte
None
seja claramente mais limpo, o OP quer'null'
nesse caso.Você tem duas opções; lidar com a exceção ou testar o comprimento:
ou
Use o primeiro se geralmente não houver um segundo item, o segundo se às vezes não houver um segundo item.
fonte
Um ternário será suficiente. mudança:
para
esta é uma maneira mais curta de expressar
fonte
Tomando como referência o ThiefMaster ♦ às vezes obtemos um erro com o valor fornecido como '\ n' ou nulo e executamos o necessário para lidar com ValueError:
Lidar com a exceção é o caminho a percorrer
fonte
fonte
Para qualquer pessoa interessada em uma maneira mais curta:
Mas para um melhor desempenho, sugiro usar em
False
vez de'null'
, então um teste de uma linha será suficiente:fonte