我目前正在一个非常错误的互联网服务的地方度过这一周,同时试图抓住项目的在线数据。特别是,我正在访问URL列表中的每个URL,并从每个网站抓取特定的数据片段以放入CSV。 URL列表相当大(33,000多个URL),我发现当互联网出现故障时,我很难找到离开的地方。有没有办法快速完成?这就是我所拥有的:
def makeCSV(csv_src):
#END_TOKEN = " __END__ENTRY__"
with open(new_src, 'r') as f, open(csv_src, 'a') as fcsv:
count = 40
for i, url in enumerate(f):
while i >= count and count < len(f.readlines()):
count += 1
wr = csv.writer(fcsv, quoting=csv.QUOTE_ALL)
speaking, studying, entry, incorrect, correct = mineLearnerData(url)
data = [speaking, studying, incorrect, correct]
wr.writerow(data)
#f2.write(str(entry + END_TOKEN) + '\n')
print(count)
f.close(); fcsv.close()
'f'代表我正在使用的网址文件。我将该文件中的URL中的特定信息发送到指定的CSV文件路径。 'Count'表示要查看的下一个URL。理想情况下,我也希望能够使用行len(fcsv.readlines()),但我不断收到ascii错误。
另外,我愿意接受有关如何做到这一点的有效方法的建议,因为我对数据收集和数据采集并不熟悉。清洁过程。
答案 0 :(得分:0)
不多次调用f.readlines()
。
CSV不是适合修改的格式。您只应将其用于导入/导出数据。
对于您的用例,我将使用轻量级进程内数据库,例如sqlite3,它提供事务和崩溃恢复。