我使用多处理池来增加抓取速度,一切都很好,只是我不明白为什么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 行抓取的数据(由于池大小(。