Используйте Python для сбора данных о погоде и записи в файл

Прошу вашего совета/помощи по этому поводу:

Создайте скрипт Python, который:

  • Каждый час собирайте температуру (например, 29oC) и текущее состояние (например, ясно) с этого веб-сайта: http://www.wunderground.com/global/stations/54511.html
  • Create a CSV file with three headers:
    • Datetime (timestamp of data captured)
    • Нынешнее состояние
    • Температура

Добавьте данные, собранные с веб-сайта, в новую строку CSV-файла.

Правила:

  • Скрипт должен работать на вашем компьютере автоматически в течение 5 дней.

У вас есть совет? :(

Я ценю вашу помощь в этом.

Я пробовал это:

import urllib2
import cookielib

cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

setURL = 'http://www.wunderground.com/global/stations/54511.html?MR=1'
request = urllib2.Request(setURL)
response = opener.open(request)

url = "http://www.wunderground.com/global/stations/54511.html?MR=1"
request = urllib2.Request(url)
page = opener.open(request)

WeatherData = page.read()                            
print WeatherData

Итак, он печатает все данные, но я хочу напечатать только:

Дата и время (отметка времени захваченных данных) – Текущее состояние – Температура

  • как я уже сказал, нужен совет.

    • что я должен использовать для выполнения этой задачи.

    • Как настроить сбор данных за (дни), я не знаю..

Полный ответ и копипаст мне не нужны, я не дурак...

Я хочу понять.


person Nardrek    schedule 16.07.2013    source источник


Ответы (2)


Weather Underground опубликовала пример Python для получить доступ к их API. Я думаю, вам лучше всего использовать их код. Если вы поэкспериментируете с переменной parsed_json в примере, вы сможете получить то, что хотите.

Что касается запуска программы через фиксированные интервалы, проверьте этот поток.

person Community    schedule 16.07.2013
comment
Вам действительно не нужно изучать JSON как таковой, потому что это просто способ представления типов Python. parsed_json на самом деле является словарем Python, поэтому вы можете просто распечатать его как есть и проверить его содержимое, не зная никакого JSON. - person ; 16.07.2013
comment
ой как приятно! Спасибо! Есть некоторые проблемы с location = parsed_json['China']['Beijing'] в подсказке написано, ключевая ошибка. Разберусь. Спасибо. - person Nardrek; 16.07.2013
comment
Вам придется изменить URL-адрес с «/q/IA/Cedar_Rapids.json» на что-то вроде «/q/CN/Beijing.json». (Попробуйте, но может быть не фактической ссылкой). - person ; 16.07.2013

Такая задача называется Очистка экрана. Код, который я показываю ниже, просто добавляет несколько подпрограмм манипулирования строками для очень простой очистки, но вы можете сделать гораздо лучшую работу с помощью инструмента, предназначенного для очистки экрана, например Красивый суп.

import urllib2
import cookielib

cookieJar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

url = "http://www.wunderground.com/global/stations/54511.html?MR=1"
request = urllib2.Request(url)
page = opener.open(request)

# This is one big string
rawdata = page.read()

# This breaks it up into lines
lines_of_data = rawdata.split('\n')

# This is one line in the raw data that looks interesing.  I'm going to
# filter the raw data based on the "og:title" text.
# 
#'<meta name="og:title" content="Beijing, Beijing | 31&deg; | Clear" />

# The "if line.find(" bit is the filter. 
special_lines = [line for line in lines_of_data if line.find('og:title')>-1]
print special_lines

# Now we clean up - this is very crude, but you can improve it with
# exactly what you want to do.
info = special_lines[0].replace('"','').split('content=')[1]
sections = info.split('|')
print sections

Выход:

['\t\t<meta name="og:title" content="Beijing, Beijing | 32&deg; | Clear" />']
['Beijing, Beijing ', ' 32&deg; ', ' Clear />']

Редактировать: Во что бы то ни стало, если конкретный веб-сайт предлагает веб-службы, такие как JSON, как в ответе Xaranke, используйте это! Однако не все веб-сайты это делают, поэтому Beautiful Soup все еще может быть очень полезным.

person Caleb Hattingh    schedule 16.07.2013