Python多线程抓取,将数据写入csv文件



我使用多处理池来增加抓取速度,一切都很好,只是我不明白为什么python每30行写一次我的csv的标题,我知道有一个链接与我输入的池的参数,但如何纠正这种行为

def parse(url):
dico = {i: '' for i in colonnes}
r = requests.get("https://change.org" + url, headers=headers, timeout=10)
# sleep(2)
if r.status_code == 200:
# I scrape my data here
...
pprint(dico)
writer.writerow(dico)
return dico
with open(lang + '/petitions_' + lang + '.csv', 'a') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames= colonnes)
writer.writeheader()
with Pool(30) as p:
p.map(parse, liens)

有人可以告诉"writer.writerow(dico("放在哪里以避免标题重复? 谢谢

检查文件是否存在:

os.path.isfile('mydirectory/myfile.csv')

如果存在,请不要再次写入标头。为标头创建一个函数(def...(,为数据创建另一个函数。

看起来您所指的"标题"来自writer.writeheader()行,而不是writer.writerow()行。

如果没有完整的代码片段,我只能假设您有一个像外循环这样的东西,它环绕着with open块。因此,每次代码进入with块时,都会打印一个标题行,然后打印 30 行抓取的数据(由于池大小(。

相关内容

  • 没有找到相关文章