代码之家  ›  专栏  ›  技术社区  ›  teoman

python3美化输出模块“nonetype”错误

  •  1
  • teoman  · 技术社区  · 6 年前

    我是新来的美化组模块,我有一个问题。我的代码很简单。最重要的是,我想从这个网站 this 我在努力讨价还价。(第二(2)个大数字加上更多)

    我的代码:

    import urllib
    from bs4 import BeautifulSoup
    
    
    quote_page = 'https://www.bloomberg.com/quote/SPX:IND'
    
    page = urllib.request.urlopen(quote_page)
    
    soup = BeautifulSoup(page, 'html.parser')
    
    price_box = soup.find('div', attr = {'class': 'price'})
    price = price_box.text
    
    print(price)
    

    我得到的错误是:

    price = price_box.text
    
    AttributeError: 'NoneType' object has no attribute 'text'
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Luke    6 年前

    我使用了更健壮的css选择器,而不是find方法。因为只有一个 div 带类的元素 price ,我猜这是正确的元素。

    import requests
    from bs4 import BeautifulSoup
    
    response = requests.get('https://www.bloomberg.com/quote/SPX:IND')
    soup = BeautifulSoup(response.content, 'lxml')
    price = soup.select_one('.price').text
    print(price)
    
        2
  •  0
  •   Hannnn    6 年前

    另一个解决方案:

    from bs4 import BeautifulSoup
    from requests import Session
    
    session = Session()
    session.headers['user-agent'] = (
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
        'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/'
        '66.0.3359.181 Safari/537.36'
    )
    
    quote_page = 'https://www.bloomberg.com/quote/SPX:IND'
    
    page= session.get(quote_page)
    
    soup = BeautifulSoup(page.text, 'html.parser')
    
    price_box = soup.find('meta', itemprop="price")
    
    price = float(price_box['content'])
    
    print(price)