所以我剛開始編程幾個小時前,從Nathan Yau的Visualize This開始編寫一個例子。我使用Python 3.3.4和BeautifulSoup4進行第一次數據刮擦練習。儘管這本書好像是用Python 2.x中,我已經設法找出更新的代碼來完成利用wunderground.com歷史數據我的第一個數據刮練習:Python:AttributeError:'NoneType'對象沒有屬性'string',儘管在IDLE中工作
>>> maxTemp = soup.findAll(attrs={"class":"nobr"})[5].span.string
>>> print(maxTemp)
的結果,因爲它應該是,是「37」。
我包括我的第一個劇本這段代碼,當我試圖從命令提示符下運行它,它啓動,但後來我得到的錯誤:
"AttributeError: 'NoneType' object has no attribute 'string'"
你可以想像,這是令人沮喪看到我的代碼在Python IDLE GUI中工作正常,而不是從腳本中工作。我已經四處尋找答案並嘗試了不同的事情,但我現在明確地停滯不前。有什麼建議麼?
編輯:爲我的示例添加更多的代碼。這是從失敗的腳本:
url = "http://www.wunderground.com/history/airport/KBOS/2013/" + str(m) + "/" + str(d) + "DailyHistory.html"
page = urllib.request.urlopen(url)
# Get daily maximum temperature from page
soup = BeautifulSoup(page)
# maxTemp = soup.body.nobr.b.string
maxTemp = soup.findAll(attrs={"class":"nobr"})[5].span.string
再次,它沒有當我運行它從我的終端:
C:\Python33>python get-weather-data.py
Getting data for 201311
Traceback (most recent call last)
File "get-weather-data.py", line 28, in (module)
maxTemp = soup.findAll(attrs={"class":"nobr"})[5].span.string
AttributeError: 'NoneType' object has no attribute 'string'
即使它正常工作在這裏IDLE:
import urllib.request
page = urllib.request.urlopen("http://www.wunderground.com/history/airport/KBOS/2013/1/1/DailyHistory.html")
from bs4 import BeautifulSoup
soup = BeautifulSoup(page)
maxTemp = soup.findAll(attrs={"class":"nobr"})[5].span.string
print(maxTemp)
你正在試圖獲得''從soup.findAll(ATTRS = { 「類」: 「NOBR」}).string' [5] .span',但後者被設置爲「沒有」,而不是你期望的。爲什麼這是這種情況,很難說。你應該發佈一個完整的例子,而不是一行。 – Carpetsmoker
我增加了一些更多的例子,但我不知道它有多大的幫助。我的假設是「字符串」指的是(第一個跨度是nobr類的第六個實例)內可能存在的任何字符串。 IDLE GUI將返回網站上顯示的值「37」,這表明它是某種東西,而不是「無」。但是你是否建議我必須告訴腳本「字符串」意味着什麼,比如「通過字符串,Python,我的意思是指任何字符在那裏」? –
RemsNeato