AttributeError:' NoneType'对象没有属性'找到'

时间:2014-06-18 11:40:25

标签: python beautifulsoup

我有一组网址,我在名单中列出了这些网址(例如http://www.amazon.com/b/ref=s9_al_bw_brwse_a_v?_encoding=UTF8&node=9097393011&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=10RXCP9TZPW3BP73EKHA&pf_rd_t=101&pf_rd_p=1818119462&pf_rd_i=2858778011)。在此网址页面的底部,有每个类别的页数。

有一个span元素,我试图返回一个url.But它正在返回NoneType error

到目前为止我尝试过的代码

for links in full_links:
    mech=Browser()
    mech.set_handle_robots(False)
    mech.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
    url=links
    page=mech.open(url)
    html=page.read()
    soup=BeautifulSoup(html)
    no_pages = soup.find('div',id="pagn")
    a=no_pages.find('span',{'class':'pagnLink'})
    for aes in a:
        print aes.text
        for a in elm.findAll('a'):
            link='http://www.amazon.com'+a['href']
            print link

1 个答案:

答案 0 :(得分:2)

您未能包含完整的回溯,但可能是soup.find('div')调用返回None。对于该页面,您尝试查找的元素是而不是

如果找不到元素,Element.find()将返回None,并且尝试使用该None值的后续行将失败。在这种情况下,no_pagesNone,因此no_pages.find()失败。

对于像这样的元素搜索,使用CSS selectors 更容易

for page_link in soup.select('div#pagn span.pagnLink a[href]'):
    link = 'http://www.amazon.com' + page_link['href']
    print link

这将找到<div id="pagn"> - &gt;中的所有链接。 <span class="pagnLink>元素树,前提是它们具有href属性。

如果divspan不存在,此搜索将返回空循环。