2016-04-13 20 views
1

Bir json dosyasına kopyaladığım verileri dökmek istiyorum. Zaten iyi bir biçimde (sözlük, liste, dize vb.) Olduğuna inanıyorum Bir json dosyasına nasıl çıktı verebilirim?Python sözlüğünü JSON dosyasına dökme

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

Nerede çalışma dizininde output.json dosyaya sözlüğü yazacağına dair:

#!/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() 

cevap

0

Aşağıdaki kullanmak gerekir.
Örneğin dosyayı kullanıcının Masaüstü'ne göndermek için open('output.json', 'w') yerine open('C:\Users\user\Desktop\output.json', 'w') gibi tam yol sağlayabilirsiniz.

+0

Harika teşekkürler! Ayrıca nerede kaydedileceğini nasıl belirleyebileceğimi biliyor musun? Şimdi, otomatik olarak belgelerime kaydeder. – malina

+0

@malina Cevabımı düzenledim. Sorunu çözdüyse lütfen bana bildirin. – Rafael

+0

teşekkür etti :) – malina