2017-09-20 15 views
1

私はPythonでスクリプトを書いて、Webページのデータを解析し、panda経由でcsvファイルに書き出しました。これまで私が書いたことは、そのページで利用可能なすべてのテーブルを解析できますが、CSVファイルに書き込む場合は、そのページの最後のテーブルをそのCSVファイルに書き込んでいます。間違いなく、ループのためにデータが上書きされています。最後のテーブルだけでなく、異なるテーブルのすべてのデータを書き込むことができるように、この欠陥を修正するにはどうすればよいですか?前もって感謝します。WebページからCSVファイルに表形式のデータを書き込む

import csv 
import requests 
from bs4 import BeautifulSoup 
import pandas as pd 


res = requests.get('http://www.espn.com/nba/schedule/_/date/20171001').text 
soup = BeautifulSoup(res,"lxml") 
for table in soup.find_all("table"): 
    df = pd.read_html(str(table))[0] 
    df.to_csv("table_item.csv") 
    print(df) 

Btw、私はパンダだけを使ってデータをcsvファイルに書き込むことを期待しています。再度、感謝します。

あなたは1 dfため concatを必要とするので、その後、Webページに read_html何リターン list of DataFramesを使用することができます

答えて

1

ファイルに書き込むための
dfs = pd.read_html('http://www.espn.com/nba/schedule/_/date/20171001') 

df = pd.concat(dfs, ignore_index=True) 
#if necessary rename columns 
d = {'Unnamed: 1':'a', 'Unnamed: 7':'b'} 
df = df.rename(columns=d) 
print (df.head()) 
       matchup    a time (ET) nat tv away tv home tv \ 
0   Atlanta ATL  Miami MIA  NaN  NaN  NaN  NaN 
1    LA LAC  Toronto TOR  NaN  NaN  NaN  NaN 
2 Guangzhou Guangzhou Washington WSH  NaN  NaN  NaN  NaN 
3  Charlotte CHA  Boston BOS  NaN  NaN  NaN  NaN 
4   Orlando ORL  Memphis MEM  NaN  NaN  NaN  NaN 

          tickets b 
0 2,401 tickets available from $6 NaN 
1 284 tickets available from $29 NaN 
2 2,792 tickets available from $2 NaN 
3 2,908 tickets available from $6 NaN 
4 1,508 tickets available from $3 NaN 

そして最後to_csv

df.to_csv("table_item.csv", index=False) 

はEDIT:

学習のためには、それぞれDataFrameをリストに追加してからconcat

res = requests.get('http://www.espn.com/nba/schedule/_/date/20171001').text 
soup = BeautifulSoup(res,"lxml") 
dfs = [] 
for table in soup.find_all("table"): 
    df = pd.read_html(str(table))[0] 
    dfs.append(df) 

df = pd.concat(dfs, ignore_index=True) 
print(df) 

df.to_csv("table_item.csv") 
+0

ありがとうございました。そのような精巧な答えと明快さのために、それは目的を果たす。しかし、学習目的のために:あなたが私が私の投稿で始まったやり方にこだわりたいなら、どうすればそれらのデータをCSVファイルに書き込むことができるか教えてください。 – SIM

+1

私は何百万回もボタンを押すことができなかったことは非常に不幸です。私もそう出来ればいいけど。大変ありがとうございました。 – SIM

+0

喜んで助けることができます;)幸運! – jezrael

関連する問題