首页 > 解决方案 > python抓取错误AttributeError:'NoneType'对象没有属性'text'

问题描述

我正在用漂亮的汤做python抓取,我正在抓取的网站有一个带有标题、链接和文本的28个容器,文本在<p>标签中,我的问题是我可以抓取所有数据但有些<p>标签没有文本,所以我收到"AttributeError: 'NoneType' object has no attribute 'text'" 我的代码有一个错误 :

containers = page_soup.findAll("div", {"class":"item-container"})


for contain in containers:


    title = contain.div.a.h3.text

    print("title: "+title)

    link = contain.div.a["href"]

    print("source: "+link)

    des = contain.div.p.text
   
    print("Description: "+des)

它打印 5 次<p>标签文本,因为并非所有<p>标签都有文本,但它给了我错误,如何解决这个问题?

标签: beautifulsoupscrapyweb-crawlermechanize

解决方案


您可以尝试如下完成任务:

for contain in page_soup.find_all("div", {"class":"item-container"}):
    title = contain.div.a.h3.text
    link = contain.div.a["href"]
    try:
        des = contain.div.p.text
    except:
        des = ""
    print("title: {}\nlink: {}\ndescription: {}\n".format(title,link,des))

推荐阅读