我非常喜欢初学者。这会从URL生成“正确”数据,但是当我尝试生成CSV文件时,生成的Excel文件为空。 这是代码......
import csv
import urllib.request
from bs4 import BeautifulSoup
f = open('dataoutput.csv', 'w', newline = "")
writer = csv.writer(f)
soup = BeautifulSoup(urllib.request.urlopen("https://www.rjobrien.co.uk/tools/quoteresult/symbol/FGBLM8").read(), 'lxml')
tbody = soup('table', {"class": "table table-bordered table-condensed"})[0].find_all('tr')
for row in tbody:
cols = row.findChildren(recursive=False)
cols = [ele.text.strip() for ele in cols]
writer.writerow(cols)
答案 0 :(得分:0)
你的意思是在循环之后放置writerow()
吗?如上所述,它只会产生最后一行。
我假设您稍后会f.close()
。我建议使用with
来关闭范围末尾的文件。例如,
with open('dataoutput.csv', 'w', newline = "") as f:
writer = csv.writer(f)
...
答案 1 :(得分:0)
您应该使用与循环相同的标识缩进<tab>writer.writerow(cols)
。
完成文件编写后,您应该f.close()
。 Python应该自动执行,但你永远不知道它什么时候会这样做,而你正在使用系统资源(并行打开有限数量的文件)。
最终您可以添加第一行:sep=,
,这样您就可以使用不同的Excel区域设置。见https://superuser.com/questions/407082/easiest-way-to-open-csv-with-commas-in-excel