Хорошо, я здесь нахожусь здесь. Для моего класса мы должны очистить данные с веб-сайта 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 для циклов создайте список URL-адресов и обрабатывайте их по одному, просто предложение. ваш код довольно грязный ... – firephil
Нет никаких ошибок, он просто ничего не поместит в файл .txt. Кроме того, мне очень жаль. Я действительно не понимаю, что я делаю. Это все для класса. –