我试图理解这个令人讨厌的索引超出范围错误一段时间但我无法弄清楚它出现的原因。
输出是我期望的正确数量的结果。 我无法抓住空洞的那个,我猜它会引起错误。
在下面的代码中,我试图捕获错误,但我必须做错事。 我也尝试了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
非常感谢
答案 0 :(得分:0)
由于您的except语句专门捕获ValueError
,并且对titlecontain
的无效访问权限为IndexError
,因此错误未被捕获。您可以将代码更改为except IndexError
,而不仅仅是except
,这样可以发现错误。
您可能只想使用if语句。像
这样的东西if len(titlecontain) == 0:
continue
希望这有帮助!
答案 1 :(得分:0)
我让它像这样工作:
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")