Python3 beautifulsoup模块' NoneType'错误

时间:2018-06-02 22:20:36

标签: python python-3.x web-scraping beautifulsoup urllib

我是beautifulsoup模块的新手,我遇到了问题。我的代码很简单。最重要的是,我试图抓住的网站是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 个答案:

答案 0 :(得分:2)

我使用了更强大的CSS Selector而不是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)

答案 1 :(得分:0)

另一种解决方案:

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)