индекс вне диапазона с BeautifulSoup - PullRequest
0 голосов
/ 15 мая 2018

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

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

В приведенном ниже коде я попытался зафиксировать ошибку, но я должен что-то не так.Я также попробовал метод len ().Я также считаю количество итераций.

#Import lib needed
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

#-----------------------------------------Importing data -----------------------------------------------------------------#
#Page with number of adds per location

my_url_nb_Nimes_building = 'https://www.leboncoin.fr/ventes_immobilieres/offres/?th=1&q=immeuble&it=1&location=N%EEmes&ret=1&ret=2&ret=5'
#Opening connection, grabbing the page, close connection
uClientnimesbuild = uReq(my_url_nb_Nimes_building)
page_htmlnimesbuild =  uClientnimesbuild.read()
uClientnimesbuild.close()

page_soupnimesbuild = soup(page_htmlnimesbuild, "html.parser")


containglobalnbnimesbuild = ((page_soupnimesbuild).find_all("section",{"class":"item_infos"}))


count = 0
for contain in containglobalnbnimesbuild:
    try:
        titlecontain = contain.find_all("h2",{"class":"item_title"})
        title = titlecontain[0]
        print("Titre:", title)
        count = count +1
        print(count)
    except ValueError:
        print("inerror")

Не могли бы вы представить, что я делаю неправильно, чтобы поймать это.

    title = titlecontain[0]
IndexError: list index out of range

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

у меня получилось так:

import requests
from bs4 import BeautifulSoup

website_url = 'https://www.leboncoin.fr/ventes_immobilieres/offres/?th=1&q=immeuble&it=1&location=N%EEmes&ret=1&ret=2&ret=5'
page = requests.get(website_url).text
soup = BeautifulSoup(page,'lxml')

section = soup.find("section",{"class":"tabsContent block-white dontSwitch"})

for t in section.find_all("h2",{"class":"item_title"}):
    try:
        print(t.text.strip())
    except ValueError:
        print("inerror")
0 голосов
/ 15 мая 2018

Поскольку ваш оператор исключения специально перехватывает ValueError, а неправильный доступ к titlecontain дает вам IndexError, ошибка не перехватывается.Вместо этого вы могли бы изменить код на except IndexError или просто except, и это должно отловить ошибку.

Возможно, вы просто захотите использовать оператор if.Что-то вроде

if len(titlecontain) == 0:
    continue 

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...