Python3 - AttributeError:' NoneType'对象没有属性'内容'

时间:2016-08-02 08:50:00

标签: python python-3.x module attributeerror nonetype

我正在尝试基于xc.com货币转换器网站创建一个非常简单的Python货币转换器,但是在我的程序结束时,我收到以下错误:

第16行,在     打印(result.contents [0]) AttributeError:' NoneType'对象没有属性'内容'

在研究了类似的NoneType AttributeErrors后,我明白什么东西什么也没有回复,但我怎么能找到它是什么以及在哪里?我可以在代码中使用前面的print语句来查找它吗?

这是我的代码:

import requests
from bs4 import BeautifulSoup

amount = input("Enter amount ")
currency1 = input("Enter currency1 ")
currency2 = input("Enter currency2 ")

url = "http://www.xe.com/currencyconverter/convert/" + "?Amount=" + 
amount + "&From=" + currency1 + "&To=" + currency2

html_code = requests.get(url).text

soup = BeautifulSoup(html_code, "html.parser")

result = soup.find('td', {'class', "rightCol"})

print(result.contents[0])

我在Mac OS X上使用IDLE版本3.5.2 El Capitan v 10.11.6(15G31) 我通过自制软件安装了Python 3.5.2。

这是我的IDLE3输出:

Python 3.5.2 (default, Aug  2 2016, 08:10:22) 
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> 
 RESTART: /c2.py 
Enter amount 100
Enter currency1 usd
Enter currency2 aud
Traceback (most recent call last):
  File "/c2.py", line 16, in <module>
    print(result.contents[0])
AttributeError: 'NoneType' object has no attribute 'contents'
>>>

非常感谢任何帮助,

非常感谢!

2 个答案:

答案 0 :(得分:3)

此错误非常简单,resultNone

result = soup.find('td', {'class', "rightCol"})

您正在传递find{'class', "rightCol"}而不是{'class': "rightCol"}
字典angular.module('blah').directive('someDirective', function () { return { scope: { arrayParam1: '=arrayParam1', arrayParam2: '=arrayParam2' }, restrict: 'E', templateUrl: '/my/path/to/someDirective.tpl.html', link: function (scope, elem, attrs) { //Some logic scope.someEvent = function(){ //some logic } scope.$on('$viewContentLoaded', function () { debugger; scope.someEvent(); }); } }; });

答案 1 :(得分:1)

抛出异常是因为您的result名称绑定到None对象,这可能表示BeautifulSoup.find由于某些原因失败,可能是因为,我希望在这里:

result = soup.find('td', {'class', "rightCol"})

要改成这个吗?

result = soup.find('td', {'class': "rightCol"})