Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 抓取多个网站并将每个网站中的一个表放入其自己的CSV文件中_Python_Csv_Web Scraping - Fatal编程技术网

Python 抓取多个网站并将每个网站中的一个表放入其自己的CSV文件中

Python 抓取多个网站并将每个网站中的一个表放入其自己的CSV文件中,python,csv,web-scraping,Python,Csv,Web Scraping,我有一个文本文件,里面有我需要删除的链接。每个网站中都有一个表格,我需要将其保存在自己的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.tx

我有一个文本文件,里面有我需要删除的链接。每个网站中都有一个表格,我需要将其保存在自己的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文件的名称列表

然而,我得到了这个错误:

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

不确定出了什么问题,我知道read_html()保存了一个数据帧元组,所以我尝试获取每个数据帧并将其保存到自己的CSV中。我四处寻找,找不到一个好答案。非常感谢您的帮助

据我所知,您正在将一个元组传递给path\u或\u buf属性。这会抛出一个AttributeError。将“%”更改为“%”可以解决您的问题:

df2.to_csv(path_or_buf=("%s.csv" % id_nums[idx]), sep=',')