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

问题描述 投票:0回答:2

我使用多处理池来提高抓取速度,一切都还好,只是我不明白为什么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 scrap 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)'放在哪里以避免重复标题吗?谢谢

python csv multiprocessing screen-scraping pool
2个回答
0
投票

检查文件是否存在:


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.