好的,我在智慧的結尾。對於我的班級,我們應該從wunderground.com網站上抓取數據。我們不斷遇到問題(錯誤消息),或者代碼運行正常,但.txt文件將包含NO數據。這很煩人,因爲我需要這樣做!所以這裏是我的代碼。使用Wunderground數據進行網頁掃描,BeautifulSoup
f = open('wunder-data1.txt', 'w')
for m in range(1, 13):
for d in range(1, 32):
if (m == 2 and d > 28):
break
elif (m in [4, 6, 9, 11] and d > 30):
break
url = "http://www.wunderground.com/history/airport/KBUF/2009/" + str(m) + "/" + str(d) + "/DailyHistory.html"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
dayTemp = soup.find("span", text="Mean Temperature").parent.find_next_sibling("td").get_text(strip=True)
if len(str(m)) < 2:
mStamp = '0' + str(m)
else:
mStamp = str(m)
if len(str(d)) < 2:
dStamp = '0' +str(d)
else:
dStamp = str(d)
timestamp = '2009' + mStamp +dStamp
f.write(timestamp.encode('utf-8') + ',' + dayTemp + '\n')
f.close()
另外對不起,這段代碼可能不是正確的縮進,因爲它在Python中。我對此並不擅長。
更新:所以有人回答下面的問題,它的工作,但我意識到我拉錯了數據(oops)。所以我把這個放在:
import codecs
import urllib2
from bs4 import BeautifulSoup
f = codecs.open('wunder-data2.txt', 'w', 'utf-8')
for m in range(1, 13):
for d in range(1, 32):
if (m == 2 and d > 28):
break
elif (m in [4, 6, 9, 11] and d > 30):
break
url = "http://www.wunderground.com/history/airport/KBUF/2009/" + str(m) + "/" + str(d) + "/DailyHistory.html"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, "html.parser")
dayTemp = soup.findAll(attrs={"class":"wx-value"})[5].span.string
if len(str(m)) < 2:
mStamp = '0' + str(m)
else:
mStamp = str(m)
if len(str(d)) < 2:
dStamp = '0' +str(d)
else:
dStamp = str(d)
timestamp = '2009' + mStamp +dStamp
f.write(timestamp.encode('utf-8') + ',' + dayTemp + '\n')
f.close()
所以我很不確定。我正在試圖做的是數據刮
請編輯您的帖子以修復您的縮進,以便發佈的代碼實際運行。另外,請添加任何錯誤或回溯的**全文**。 – MattDMo
解釋您想要獲取數據的月份和日期。此外,而不是2循環創建一個網址列表,並一次處理它們,只是一個建議。你的代碼很雜亂...... – firephil
沒有任何錯誤,它只是不會把任何東西放到.txt文件中。另外,我很抱歉。我真的不知道我在做什麼。這是全班同學。 –