0

コードはカードから個々のイベントをスクレイピングしますが、このエラーが発生し続けます:

C:\Python27\python.exe C:/Users/James/PycharmProjects/scraperscrappy /scrapy.py トレースバック (最新の呼び出しが最後): ファイル "C:/Users/James/PycharmProjects/scraperscrappy/scrapy.py"、31 行目、writer.writerow(c) の ValueError: 閉じたファイルに対する I/O 操作

私はpyCharmを使用しています。

プロセスは終了コード 1 で終了しました Python はその場で csv ファイルを作成しますが、プロジェクト内で csv ファイルを作成しようとしましたが、それでも同じメッセージが表示されました。問題は 31 行目の zip の後の文字列にある可能性があります。どんな助けでも感謝します。

import csv
from urllib import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.gbgb.org.uk/resultsRace.aspx?id=1793467")
bsObj = BeautifulSoup(html)

one = bsObj.findAll("li", {"class": "first essential fin"})
two = bsObj.findAll("li", {"class": "essential greyhound"})

three = bsObj.findAll("li", {"class": "timeDistance"})
four = bsObj.findAll("li", {"class": "trap"})
five = bsObj.findAll("li", {"class": "sp"})
six = bsObj.findAll("li", {"class": "timeSec"})
seven = bsObj.findAll("li", {"class": "essential trainer"})
eight = bsObj.findAll("li", {"class": "first essential comment"})

firstessentialfin = [a.getText().strip() for a in one]
essentialgreyhound = [b.getText().strip() for b in two]
timeDistance = [c.getText().strip() for c in three]
trap = [d.getText().strip() for d in four]
sp = [e.getText().strip() for e in five]
timeSec = [f.getText().strip() for f in six]
essentialtrainer = [g.getText().strip() for g in seven]
firstessentialcomment = [h.getText().strip() for h in eight]

with open('dogfile.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter=",")
for c in zip(firstessentialfin, essentialgreyhound, timeDistance,    trap,sp, timeSec, essentialtrainer,
         firstessentialcomment):
    writer.writerow(c)
4

1 に答える 1

2

問題はインデントにあります。for ループをwithコンテキスト マネージャー本体の下に移動します。

with open('dogfile.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter=",")
    for c in zip(firstessentialfin, essentialgreyhound, timeDistance,    trap,sp, timeSec, essentialtrainer, firstessentialcomment):
        writer.writerow(c)
于 2015-09-01T17:42:52.943 に答える