Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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_Beautifulsoup - Fatal编程技术网

Python 将列表写入csv

Python 将列表写入csv,python,csv,beautifulsoup,Python,Csv,Beautifulsoup,我正试图写两个列表,我有一个csv。我的当前代码将只写入第一个writerow调用。我的目标是写名称[0]、表[0]、名称[1]、表[1]等等 from bs4 import BeautifulSoup import urllib.request import csv url = "http://www.thegreyhoundrecorder.com.au/form-guides/lismore/longform/62384/1" page = urllib.request.urlopen

我正试图写两个列表,我有一个csv。我的当前代码将只写入第一个writerow调用。我的目标是写名称[0]、表[0]、名称[1]、表[1]等等

from bs4 import BeautifulSoup
import urllib.request
import csv


url = "http://www.thegreyhoundrecorder.com.au/form-guides/lismore/longform/62384/1"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')

names = soup.find_all("span", class_="dogName")
table = soup.find_all("table", class_="longForm")


with open("test.csv", "a") as f:
    writer = csv.writer(f)
    for n,t in zip(names, table):
        writer.writerow([n.get_text()])
        writer.writerow([t.get_text()])
输出=writer.writerow([n.get_text()])的结果


尝试将两列放在一个writerow调用中,如

writer.writerow([n.get_text(), t.get_text()])

你很接近,但我不确定你想用这些桌子做什么。这是一大团表格HTML。这里有一个对我有意义的例子。根据需要进行修改。诀窍是使用换行符和编码参数(参见csv.reader/writer的文档)打开文件,并将所需的所有内容写入一行,作为传递给writerow的一个列表。另外,源网站必须已经改变,我得到了一个404错误,所以我只是选择了另一个页面

from bs4 import BeautifulSoup
import urllib.request
import csv

url = "http://www.thegreyhoundrecorder.com.au/form-guides/addington/long-form/62423/1"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')

names = soup.find_all("span", class_="dogName")
table = soup.find_all("table", class_="longForm")
headers = ['Name'] + [h.get_text() for h in table[0].find_all('th')]

#patch because headers are wonky
headers[1] = 'Day'
headers[2] = 'Date'

with open("test.csv",'w',newline='',encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    for n,t in zip(names, table):
        for row in t.find_all('tr')[:-1]: # less one row because it is blank
            cols = [col.get_text() for col in row.find_all('td')]
            writer.writerow([n.get_text().strip()]+cols)
输出:

Name,Day,Date,Fin,Box,Mgn,Trk,Dist,Grd,Time,Win T,BON,Sect,In Run,Wgt,SP,Winner / Second
TUBBY KEVIE,FRI,07/09/18,1ST,(2),4.70,CCH,295,C12,17.37,17.37,17.29,5.93,111,34.0,$9.5,GOLDSTAR POWER
TUBBY KEVIE,TUE,11/09/18,4TH,(5),4.30,OTG,310,C2,19.03,18.76,18.56,N/A,444,34.4,$7.5,HOMEBUSH SKIP
TUBBY KEVIE,THU,13/09/18,1ST,(2),0.70,CCH,295,C3,17.61,17.61,17.02,N/A,311,33.1,$5.9,DUSKY BREW
TUBBY KEVIE,TUE,18/09/18,4TH,(1),4.10,SOU,390,C3,23.16,22.90,22.36,N/A,434,34.7,$3,HOMEBUSH SKIP
TUBBY KEVIE,TUE,25/09/18,6TH,(1),6.60,OTG,310,C45,19.08,18.66,18.60,N/A,566,35.3,$17.1,SERGESS
TUBBY KEVIE,THU,27/09/18,4TH,(4),6.20,CCH,295,C4,17.73,17.34,17.17,N/A,544,34.9,$14.6,OSKITZ
TUBBY KEVIE,TUE,02/10/18,5TH,(3),7.00,SOU,390,C4,23.32,22.88,22.84,N/A,845,35.0,$10.9,SOZIN'S BLUE
TUBBY KEVIE,THU,04/10/18,6TH,(2),4.50,CCH,295,C4,17.57,17.29,17.01,N/A,666,34.4,$7.9,IT'S THAT FRESH
ZUGZWANG,TUE,24/04/18,3RD,(5),1.30,SOU,390,C3,22.93,22.85,22.45,N/A,323,32.4,$10.3,STAR BUCKING
ZUGZWANG,TUE,08/05/18,1ST,(8),1.50,SOU,390,C3,23.09,23.09,22.17,N/A,421,32.5,$9,MAGIC MIKE
ZUGZWANG,TUE,15/05/18,2ND,(7),1.00,OTG,310,C4,18.67,18.61,18.16,N/A,432,33.3,$19.2,GOTCHA MAGENTA
ZUGZWANG,TUE,22/05/18,7TH,(7),6.80,SOU,390,C34,23.10,22.67,22.53,N/A,687,33.3,$9.2,COSMIC RICHIE
ZUGZWANG,TUE,29/05/18,7TH,(2),7.60,OTG,310,C4,18.91,18.43,18.27,N/A,577,33.0,$12.8,COSMIC JASE
ZUGZWANG,TUE,05/06/18,5TH,(7),4.70,SOU,390,C34,23.03,22.73,22.54,N/A,555,33.3,$10.5,DETECTIVE DASH
ZUGZWANG,TUE,12/06/18,6TH,(7),9.40,OTG,310,C3,19.19,18.60,18.51,N/A,576,33.0,$15.9,DEBBIE BAXTER
ZUGZWANG,THU,04/10/18,4TH,(3),6.80,CCH,295,C3,17.80,17.37,17.01,N/A,434,33.5,$18.1,ZIPPING LANCE
KETCHIKAN KIM,THU,09/08/18,8TH,(3),15.60,CCH,295,C1,18.32,17.34,17.12,N/A,788,27.2,$2.4,OPAWA LAWSEY
KETCHIKAN KIM,TUE,14/08/18,6TH,(2),6.10,OTG,310,C1,19.08,18.70,18.44,N/A,566,27.1,$2.6,CHIEF DOUG
KETCHIKAN KIM,TUE,21/08/18,7TH,(6),6.60,CCH,295,C1,17.92,17.50,17.37,N/A,557,27.1,$2.7,ZIRCON
KETCHIKAN KIM,TUE,18/09/18,5TH,(4),2.20,CCH,295,C1,17.79,17.65,17.23,N/A,455,27.2,$8.8,DAGNY
KETCHIKAN KIM,TUE,25/09/18,3RD,(4),4.30,OTG,310,C1,19.18,18.91,18.60,N/A,333,26.8,$4.9,BENDER TRUTH
KETCHIKAN KIM,TUE,02/10/18,1ST,(2),5.70,CCH,295,C1,17.26,17.26,17.25,5.90,111,26.6,$3.2,GOLDSTAR AVALON
KETCHIKAN KIM,TUE,09/10/18,7TH,(5),17.00,OTG,310,C2,19.55,18.48,18.48,N/A,877,27.2,$2.9,CHASING FAME
KETCHIKAN KIM,FRI,12/10/18,1ST,(1),0.70,CCH,295,C2,17.77,17.77,17.59,6.04,111,26.9,$2.4,OPAWA VIKING
HALF SILVER FERN,THU,30/08/18,7TH,(6),11.60,CCH,295,C3,18.15,17.42,17.00,N/A,887,26.6,$18.4,SHADY BANJO
HALF SILVER FERN,TUE,04/09/18,6TH,(6),8.10,SOU,390,C3,22.99,22.48,22.48,N/A,866,26.8,$35.1,DYNA KUSHIDA
HALF SILVER FERN,FRI,07/09/18,1ST,(2),2.50,CCH,295,C12,17.68,17.68,17.29,6.00,111,26.9,$9.1,JEALOUS MUCH
HALF SILVER FERN,THU,13/09/18,4TH,(5),3.90,CCH,295,C3,17.63,17.38,17.02,N/A,344,26.8,$21.2,SETTLE GRETTEL
HALF SILVER FERN,TUE,18/09/18,6TH,(5),5.70,SOU,390,C3,23.26,22.90,22.36,N/A,766,27.2,$10.9,HOMEBUSH SKIP
HALF SILVER FERN,THU,20/09/18,2ND,(6),2.70,CCH,295,C3,17.85,17.68,17.16,N/A,222,27.4,$25.6,BARELLEN PANTHER
HALF SILVER FERN,TUE,09/10/18,7TH,(6),7.10,OTG,310,C3,19.24,18.79,18.48,N/A,787,26.9,$30.9,DISOBEDIENCE
HALF SILVER FERN,THU,11/10/18,7TH,(7),7.20,CCH,295,C3,17.88,17.43,17.13,N/A,877,27.0,$25.2,FIRED UP JED
SIERRA DELTA,FRI,17/08/18,5TH,(7),8.20,CCH,295,C2,17.89,17.37,17.21,N/A,565,27.4,$7.3,ZIPPING LANCE
SIERRA DELTA,FRI,24/08/18,6TH,(4),9.50,CCH,295,C2,18.02,17.42,17.40,N/A,666,27.1,$5.4,BOSTON POWERS
SIERRA DELTA,FRI,31/08/18,8TH,(4),9.00,CCH,295,C2,18.07,17.50,17.35,N/A,438,26.7,$7.8,HI HO TONTO
SIERRA DELTA,TUE,11/09/18,1ST,(3),2.00,CCH,295,C1,17.49,17.49,17.32,N/A,211,26.3,$3.9,WHITE NOT WONG
SIERRA DELTA,FRI,21/09/18,1ST,(5),1.70,CCH,295,C2,17.51,17.51,17.36,5.95,111,26.7,$4.9,NATIVE SCOUT
SIERRA DELTA,TUE,25/09/18,8TH,(5),10.40,OTG,310,C2,19.26,18.60,18.60,N/A,588,26.3,$2.9,IT'S A JOKE
SIERRA DELTA,THU,27/09/18,7TH,(2),9.50,CCH,295,C3,17.97,17.37,17.17,N/A,587,26.5,$9.1,DIZZY BANJO
SIERRA DELTA,THU,04/10/18,8TH,(4),41.60,CCH,295,C3,19.99,17.37,17.01,N/A,5f8,26.2,$17,ZIPPING LANCE
JITTERBUG JEWEL,THU,03/05/18,2ND,(6),3.00,CCH,295,CNZ05H,17.52,17.33,17.11,N/A,432,30.4,$15.3,FLOWER BOMB
JITTERBUG JEWEL,THU,10/05/18,4TH,(8),1.80,CCH,295,C23,17.58,17.47,17.28,N/A,544,30.9,$4.6,HOMEBUSH BODEN
JITTERBUG JEWEL,THU,14/06/18,8TH,(5),10.30,CCH,295,C3,18.01,17.36,17.19,N/A,888,32.2,$6.1,SARAYA JAYDE
JITTERBUG JEWEL,THU,13/09/18,4TH,(3),1.70,CCH,295,C3,17.72,17.61,17.02,6.07,134,33.1,$6.3,TUBBY KEVIE
JITTERBUG JEWEL,FRI,21/09/18,2ND,(8),0.70,CCH,295,C2,17.50,17.46,17.36,N/A,222,33.0,$4.2,MY BRO MICHAEL
JITTERBUG JEWEL,FRI,28/09/18,3RD,(7),2.70,CCH,295,C2,17.57,17.40,17.36,N/A,333,32.9,$2.5,DUNK IT
JITTERBUG JEWEL,FRI,05/10/18,1ST,(3),0.70,CCH,295,C2,17.36,17.36,17.27,5.85,111,32.8,$3,GOLDSTAR JAY JAY
JITTERBUG JEWEL,THU,11/10/18,2ND,(4),0.10,CCH,295,C3,17.50,17.49,17.13,N/A,322,32.6,$4.2,GO MARSHA GO
SMASH BOMBER,THU,05/07/18,6TH,(6),7.70,CCH,295,C34,18.06,17.57,17.16,N/A,766,28.1,$12.8,SOZIN'S BLUE
SMASH BOMBER,THU,02/08/18,7TH,(7),10.20,CCH,295,C34,17.91,17.27,17.21,N/A,877,29.2,$15.8,CASH A ROO
SMASH BOMBER,FRI,10/08/18,2ND,(2),5.70,CCH,295,C3,17.75,17.39,17.39,N/A,222,28.9,$6.1,PRINCELY GOLD
SMASH BOMBER,THU,30/08/18,8TH,(7),12.10,CCH,295,C3,18.18,17.42,17.00,N/A,778,28.1,$9.5,SHADY BANJO
SMASH BOMBER,THU,13/09/18,5TH,(4),2.40,CCH,295,C3,17.76,17.61,17.02,N/A,555,29.3,$6.7,TUBBY KEVIE
SMASH BOMBER,THU,27/09/18,2ND,(1),0.50,CCH,295,C3,17.59,17.56,17.17,5.99,112,29.3,$5.3,MY BRO MICHAEL
SMASH BOMBER,THU,04/10/18,3RD,(4),6.20,CCH,295,C3,17.57,17.18,17.01,N/A,233,29.4,$11.4,LOCO LOLA
SMASH BOMBER,THU,11/10/18,3RD,(2),1.60,CCH,295,C3,17.59,17.49,17.13,N/A,233,29.2,$5.5,GO MARSHA GO
SHANLY STAR,FRI,07/09/18,3RD,(5),5.00,CCH,295,C12,17.69,17.37,17.29,N/A,723,26.4,$3.8,TUBBY KEVIE
SHANLY STAR,TUE,11/09/18,2ND,(2),0.80,OTG,310,C2,18.88,18.83,18.56,N/A,432,26.7,$5.2,MAGIC JESS LASS
SHANLY STAR,FRI,14/09/18,5TH,(5),7.80,CCH,295,C2,17.82,17.33,17.33,N/A,555,26.5,$4.8,FIERY AFFAIR
SHANLY STAR,TUE,18/09/18,1ST,(8),2.00,SOU,390,C2,22.72,22.72,22.36,5.36,111,26.7,$9.1,LONELY BAXTER
SHANLY STAR,FRI,21/09/18,5TH,(6),4.50,CCH,295,C2,18.12,17.84,17.36,N/A,355,27.1,$4.2,DIZZY BANJO
SHANLY STAR,THU,27/09/18,7TH,(7),13.20,CCH,295,C3,18.27,17.44,17.17,N/A,777,26.9,$10.4,IT'S THAT FRESH
SHANLY STAR,TUE,02/10/18,3RD,(5),1.60,SOU,390,C3,23.03,22.93,22.84,N/A,213,26.9,$7.7,DEBBIE BAXTER
SHANLY STAR,THU,11/10/18,6TH,(3),3.20,CCH,295,C3,17.69,17.49,17.13,N/A,546,26.7,$7.8,GO MARSHA GO

嗯,不,同样的事情发生了我可以吻你,非常感谢!现在让我了解一下这些代码:)实际上,我该如何将表中的标题添加到csv的顶部?@user3170725使用标题进行了更新。@user3170725如果您不熟悉列表的理解,如果您需要查看它的工作原理,将调用
[x.get_text()for x in list]
语法。非常感谢!我对python非常陌生,有时我觉得文档很混乱。但你是对的,我需要真正理解我尝试使用的模块等。