在Python中使用BeautifulSoup时出错:AttributeError:'NoneType'对象没有属性'find'

时间:2022-01-26 08:40:09

I am trying to use BeautifulSoup to get a list of Amazon best sellers. Here is the code I am trying to use:

我正在尝试使用BeautifulSoup来获取亚马逊畅销书的列表。这是我尝试使用的代码:

from urllib2 import urlopen
from bs4 import BeautifulSoup
from HTMLParser import HTMLParser

def main():
    html_parser = HTMLParser()

soup = BeautifulSoup(urlopen("http://www.amazon.com/gp/bestsellers/").read())

categories = []

# Scrape list of category names and urls
for category_li in soup.find(attrs={'id':'zg_browseRoot'}).find('ul').findAll('li'):
    category = {}
    category['name'] = html_parser.unescape(category_li.a.string)
    category['url'] = category_li.a['href']

    categories.append(category)

del soup

# Loop through categories and print out each product's name, rank, and url.
for category in categories:
    print category['name']
    print '-'*50

    soup = BeautifulSoup(urlopen(category['url']))

    i = 1
    for title_div in soup.findAll(attrs={'class':'zg_title'}):
        if i ==1:
            print "%d. %s\n    %s" % (i, html_parser.unescape(title_div.a.string), title_div.a['href'].strip())
        i += 1

    print ''

if __name__ == '__main__':
    main()

When I run the code I get this error:

当我运行代码时,我收到此错误:

for category_li in soup.find(attrs={'id':'zg_browseRoot'}).find('ul').findAll('li'):
AttributeError: 'NoneType' object has no attribute 'find'

Why am I getting this error and how to resolve it? Any help is appreciated.

为什么我收到此错误以及如何解决?任何帮助表示赞赏。

1 个解决方案

#1


Try to read the content from your second soup as well:

尝试阅读第二汤中的内容:

for category in categories:
    print category['name']
    print '-'*50

    soup = BeautifulSoup(urlopen(category['url']).read())
...

It gave me some pretty nice output.

它给了我一些非常好的输出。

#1


Try to read the content from your second soup as well:

尝试阅读第二汤中的内容:

for category in categories:
    print category['name']
    print '-'*50

    soup = BeautifulSoup(urlopen(category['url']).read())
...

It gave me some pretty nice output.

它给了我一些非常好的输出。