首页 > 解决方案 > 股票市场上的网络抓取 - AttributeError:“NoneType”对象没有属性“文本”

问题描述

查看 我正在尝试在股票市场网站上进行网络抓取的网站代码图片。

我的代码是:

import urllib.request
from bs4 import * soup=BeautifulSoup(urllib.request.urlopen("http://www.bloomberg.com/quote/SPX:IND"))
title = soup.title.text
name = soup.find('span', {'class': 'navi-bar__logo--title'}).text #this class is executed
value = soup.find('span', {'class': 'priceText__1853e8a5'}).text #problem is with this class
print(name)
print(value)

我目前陷入此错误

警告(来自警告模块):文件“C:\Users\bakkolla\AppData\Local\Programs\Python\Python36-32\lib\site-packages\bs4__init__.py”,第 181 行 markup_type=markup_type))

用户警告:没有明确指定解析器,因此我使用了适用于该系统的最佳 HTML 解析器(“html.parser”)。

这通常不是问题,但如果您在另一个系统或不同的虚拟环境中运行此代码,它可能会使用不同的解析器并表现不同。

导致此警告的代码位于文件的第 1 行。要消除此警告,请更改如下所示的代码:

BeautifulSoup(YOUR_MARKUP}) 对此:

BeautifulSoup(YOUR_MARKUP, "html.parser") Traceback(最近一次调用最后):

文件“C:\Users\bakkolla\Desktop\ex.py”,第 8 行,in value = soup.find('span', {'class': 'priceText__1853e8a5'}).text #problem is with this class

AttributeError:“NoneType”对象没有属性“文本”

标签: python-2.7web-scrapingattributeerrornonetype

解决方案


Beautiful Soup 找不到名为 priceText__1853e8a5 的类,因此它返回 None,因此无法获取 none 的 text 属性。如果 div 类不随页面更改,请检查几页并检查您的拼写是否正确


推荐阅读