我正在尝试基于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'
>>>
非常感谢任何帮助,
非常感谢!
答案 0 :(得分:3)
此错误非常简单,result
为None
。
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"})