2016-04-13 9 views
1

Я хочу сбрасывать данные, которые я переписал в json-файл. Я считаю, что он уже в хорошем формате (словарь, список, строка и т. Д.). Как я могу выводить в json-файл?Dump Python dictionary to JSON file

#!/usr/bin/python 
#weather.scraper 

from bs4 import BeautifulSoup 
import urllib 
import json 

    def main(): 
     """weather scraper""" 
     r = urllib.urlopen("https://www.wunderground.com/history/airport/KPHL/2016/1/1/MonthlyHistory.html?&reqdb.zip=&reqdb.magic=&reqdb.wmo=&MR=1").read() 
     soup = BeautifulSoup(r, "html.parser") 
     tables = soup.find_all("table", class_="responsive airport-history-summary-table") 

    scrapedData = {} 
    for table in tables: 
     print 'Weather Philadelphia' 

     for tr in table.find_all("tr"): 
      firstTd = tr.find("td") 
      if firstTd and firstTd.has_attr("class") and "indent" in firstTd['class']: 
       values = {} 
       tds = tr.find_all("td") 
       maxVal = tds[1].find("span", class_="wx-value") 
       avgVal = tds[2].find("span", class_="wx-value") 
       minVal = tds[3].find("span", class_="wx-value") 
       if maxVal: 
        values['max'] = maxVal.text 
       if avgVal: 
        values['avg'] = avgVal.text 
       if minVal: 
        values['min'] = minVal.text 
       if len(tds) > 4: 
        sumVal = tds[4].find("span", class_="wx-value") 
        if sumVal: 
         values['sum'] = sumVal.text 
       scrapedData[firstTd.text] = values 

    print scrapedData 

    if __name__ == "__main__": 
     main() 

ответ

0

Вы должны использовать следующее:

with open('output.json', 'w') as jsonFile: 
    json.dump(scrapedData, jsonFile) 

Где собирается написать словарь в output.json файл в рабочем каталоге.
Вы можете указать полный путь, например open('C:\Users\user\Desktop\output.json', 'w'), вместо open('output.json', 'w'), например, для вывода файла на рабочий стол пользователя.

+0

большое спасибо! вы также знаете, как я могу указать, где его сохранить? Теперь он автоматически сохраняет его в моих документах. – malina

+0

@malina Я отредактировал свой ответ. Пожалуйста, дайте мне знать, если это исправить вашу проблему. – Rafael

+0

это действительно спасибо :) – malina