2017-11-04 9 views
0

ウェブサイトからテーブルを掻き集め、csvファイルに書き出します。ファイルの名前は正しいですが、ファイル名ではなく、ワークブック内のシートの名前を「Raw_Data」にする必要があります。ここで私はこれまで持っているものです。ウェブスクレーピング時にファイル名とは異なるシート名を書く

import urllib.request 
import json 
import re 
import datetime 


html = urllib.request.urlopen("https://www.wunderground.com/personal-weather-station/dashboard?ID=KNYSENEC1#history/tdata/s20171104/e20171104/mdaily").read().decode('utf8') 
json_data = re.findall(r'pws_bootstrap:(.*?)\s+,\s+country\:', html, re.S) 
data = json.loads(json_data[0]) 

nnow = datetime.datetime.now().date() 
Filenamee = "seneca_weather_" + str(nnow) 
filename = ('%s.csv' % Filenamee) 
f = open(filename, "w") 

for days in data['history']['days']: 
    for obs in days['observations']: 
     f.write(str(obs['date']['iso8601']) + "," + str(obs['temperature']) + "," + str(obs['pressure']) + "," + str(obs['wind_dir']) + "," + str(obs['wind_speed']) + "," + str(obs['precip_today']) + "\n") 

私はスーパー幅広い質問にはとても残念Pythonとウェブスクレイピングの両方に非常に新しいです。ありがとう

+0

ですから、 'csv'シート名の名前を変更したいですか?原因 'csv'はシート名を持たず、' excel'はシート名としてブック内のファイル名を表示するだけです。 – GiantsLoveDeathMetal

+0

これを見るにはhttps://stackoverflow.com/a/17684679/3407256 – GiantsLoveDeathMetal

答えて

0

あなたはPythonを試してみることをお勧めします。あなたがテーブルで作業するとすぐに、私はパンダのライブラリをお勧めします。ここのドキュメントはhttp://pandas.pydata.org/pandas-docs/stable/です。

ここでは、pandasとjson_normalizeを使用した回答があります。

import urllib.request 
import json 
import re 
import datetime 
from pandas.io.json import json_normalize 

html = urllib.request.urlopen("https://www.wunderground.com/personal-weather-station/dashboard?ID=KNYSENEC1#history/tdata/s20171104/e20171104/mdaily").read().decode('utf8') 
json_data = re.findall(r'pws_bootstrap:(.*?)\s+,\s+country\:', html, re.S) 
data = json.loads(json_data[0]) 

nnow = datetime.datetime.now().date() 
filename = "seneca_weather_{}.xlsx".format(nnow) 

df = json_normalize(data['history']['days']) 

cols = ["summary.date.iso8601","summary.temperature", 
     "summary.pressure","summary.wind_dir", 
     "summary.wind_speed","summary.precip_today"] 

df[cols].to_excel(filename,index=False,sheet_name=filename) 

出力:

excel screenshot

あなたは*の.CSVでそれをしたい場合は、単純に実行します。

df[cols].to_csv("output.csv",index=False) 
関連する問題