【问题标题】:Getting AttributeError:'NoneType' object has no attribute getText获取 AttributeError:'NoneType' 对象没有属性 getText
【发布时间】:2013-11-06 01:49:20
【问题描述】:

我已经编写了一半的代码来从 RSS 提要中提取标题和链接,但它会导致上述错误。获取文本时,两个函数都出现错误。我想去掉标题和链接标签的输入字符串。

from bs4 import BeautifulSoup
import urllib.request
import re

def getlink(a):
    a= str(a)
    bsoup=BeautifulSoup(a)
    a=bsoup.find('link').getText()
    return a

def gettitle(b):
    b=str(b)
    bsoup=BeautifulSoup(b)
    b=bsoup.find('title').getText()
    return b

webpage= urllib.request.urlopen("http://feeds.feedburner.com/JohnnyWebber?format=xml").read()

soup=BeautifulSoup(webpage)
titlesoup=soup.findAll('title')
linksoup= soup.findAll('link')

for i,j in zip(titlesoup,linksoup):
    i = getlink(i)
    j= gettitle(j)

    print (i)
    print(j)
    print ("\n")

编辑:falsetru 的方法效果很好。

我还有一个问题。可以通过 getText 从任何标签中提取文本吗?

【问题讨论】:

  • 请修正缩进。

标签: python function beautifulsoup nonetype


【解决方案1】:

我预计问题出在

def getlink(a):
    ...
    a=bsoup.find('a').getText()
    ....

记住 find 匹配标签名称,没有link 标签而是a 标签。如果没有匹配的标签,BeautifulSoup 将从 find 返回 None,因此出现 NoneType 错误。详情请查看docs。

编辑:

如果你真的在寻找文本“链接”,你可以使用bsoup.find(text=re.compile('link'))

【讨论】:

    【解决方案2】:

    i、j 已经是title、link。怎么又找到了?

    for i, j in zip(titlesoup, linksoup):
        print(i.getText())
        print(j.getText())
        print("\n")
    

    除此之外,如果您解析 xml 文件,请将 features='xml' 传递给 BeautifulSoup。

    soup = BeautifulSoup(webpage, features='xml')
    

    【讨论】:

      【解决方案3】:

      b=bsoup.find('title') 返回None

      尝试检查您的输入

      【讨论】:

        猜你喜欢
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 2021-03-24
        • 1970-01-01
        • 2022-07-21
        • 2013-04-08
        • 2019-11-07
        • 1970-01-01
        相关资源
        最近更新 更多