首页 > 解决方案 > BeautifulSoup Python NoneType 对象没有属性“文本”

问题描述

我正在尝试使用 selenium 和 beautifulsoup 4抓取一个加载了 javascript 的网站https://e-consulta.sunat.gob.pe/cl-at-ittipcam/tcS01Alias 。

但是,当尝试从树中检索元素或子项(子分支)时,我收到此错误

bloquefecha=bloque.find('div[@class="date"]').text

AttributeError:“NoneType”对象没有属性“文本”

我在此处附上我的代码和开发人员控制台的快照以用于说明目的

这是我的代码:

def beautifulseleniumsunat2():
navegador = webdriver.Chrome()
navegador.get("https://e-consulta.sunat.gob.pe/cl-at-ittipcam/tcS01Alias")
time.sleep(7)  # esperamos 7 segundos a que cargue la pagina
pagsunat = navegador.page_source
soup = BeautifulSoup(pagsunat, "html.parser")
print (soup.prettify())

bloquesdias2 = soup.select('td[class*="table-bordered calendar-day current"]')
listafecha = []
listacompra=[]
listaventa=[]
for bloque in bloquesdias2:
    bloquefecha=bloque.find('div[@class="date"]') #ALSO tried with findall and iterating with FOR loop on each element but ERROR says it's not iterable
    listafecha.append(bloquefecha.text)
    bloquecompra=bloque.find('div[@class="event normal-all-day begin end"]') #ALSO tried with findall and iterating with FOR loop on each element but ERROR says it's not iterable
    listacompra.append(bloquecompra.text)
    bloqueventa = bloque.find('div[@class="event pap-all-day begin end"]') #ALSO tried with findall and iterating with FOR loop on each element but ERROR says it's not iterable
    listaventa.append(bloquecompra.text)

listafinal=[listacompra,listaventa,listafecha]
print (listafinal)

标签: pythonseleniumbeautifulsoup

解决方案


find()None当它找不到您要查找的 div 时返回,因此您的代码正在调用None.text这就是 Python 抱怨NoneType(即None对象)没有属性的原因text

Beautiful Soup 文档中,您需要将该类作为单独的参数传递给find()

bloque.find("div", { "class" : "date" }).text

推荐阅读