2017-07-26 6 views
2

私は擦り傷が必要なリンクでテキストファイルを埋めました。私は、独自のCSVファイルに取得して保存する必要があると私はこのコードを持っている各サイトのテーブルがあります:複数のウェブサイトを掻き集めて、それぞれのテーブルを独自のCSVファイルに入れよう

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

def stir_the_soup(): 
    player_links = open('player_links.txt', 'r') 
    player_ID_nums = open('player_ID_nums.txt', 'r') 
    id_nums = [x.rstrip('\n') for x in player_ID_nums] 
    idx = 0 
    for url in player_links: 
     player_link = urllib2.urlopen(url) 
     bs = BeautifulSoup(player_link, 'lxml') 
     table_id = "" 
     if url[-12] == 'b': 
      table_id = "batting" 
     elif url[-12] == 'p': 
      table_id = "pitching" 
    table = str(bs.find('table', {'id' : (table_id + '_gamelogs')})) 
    df = pd.read_html(table) 
    df2 = df[idx] 
    df2.to_csv(path_or_buf=("%s.csv", id_nums[idx]), sep=',') 
    idx += 1 

if __name__ == "__main__": 
    stir_the_soup() 

はid_numsリストは、私は、各CSVファイルに必要名のリストです。

私はしかし、このエラーを取得しています:私は一つ一つを取得し、独自のCSVにそれを保存しようとしたので、間違っているもの

AttributeError: 'tuple' object has no attribute 'close' 

わからない、私は(read_htmlを知っている)は、データフレームのタプルを節約します。私は周りを検索し、これに良い答えを見つけることができません。任意の助けがあります

答えて

1

私が見る限り、path_or_buf属性にタプルを渡しています。これはAttributeErrorをスローします。 '%'の変更 '、'はあなたの問題を解決できます:

df2.to_csv(path_or_buf=("%s.csv" % id_nums[idx]), sep=',') 
関連する問題