#python #beautifulsoup #export-to-csv
#python #beautifulsoup #экспорт в csv
Вопрос:
Я хочу извлечь данные с веб-сайта и сохранить их в чистом формате в csv. В настоящее время мой код не выполняется и возвращает ошибку: «AttributeError: объект ‘int’ не имеет атрибута ‘writerow'»
from bs4 import BeautifulSoup
import urllib.request
import csv
url="http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/nfl/injury/injuries.html"
arr=[[],[],[],[],[]]
with urllib.request.urlopen(url) as url:
s = url.read()
soup = BeautifulSoup(s)
tables = soup.find_all("table", class_="data")
for table in tables:
teams=table.find_all("td", class_="datahead")
teamName=teams[0].text
rrows=table.find_all("tr")
for rrow in rrows:
ccols=rrow.find_all("td")
if len(ccols)>3:
name=ccols[0].text
pos=ccols[1].text
status=ccols[2].text
desc=ccols[3].text
arr[0].append(teamName)
arr[1].append(name)
arr[2].append(pos)
arr[3].append(status)
arr[4].append(desc)
with open('injuries.csv', 'w', newline='') as datafile:
a=csv.writer(datafile, delimiter=',')
for a in range(1000):
a.writerow([arr[0][a],arr[1][a],arr[2][a],arr[3][a],arr[4][a]])
datafile.close
Любое объяснение причины возникновения этой ошибки было бы с благодарностью
Комментарии:
1. измените
wr=csv.writer(datafile, delimiter=',')
иwr.writerow(...
, которые вы используетеa
как для объекта записи, так и в цикле for.
Ответ №1:
Вы используете a
как переменную цикла, так и имя csv.writer
объекта. Замените for a in range(1000)
на for i in range(1000)
и arr[0][a]
на arr[0][i]
и так далее.
Комментарии:
1. почему отрицательные оценки для этого и моего? Это правильный ответ
Ответ №2:
В
a=csv.writer(datafile, delimiter=',')
for a in range(1000):
Вы используете a
как csv.writer
, а затем сразу же используете его в качестве индекса. Измените один из них.