Python Multi-threading 抓取,将数据写入csv文件

Python Multi-threading scraping, write data in csv file

我使用多处理池来提高抓取速度,一切正常,只是我不明白为什么 python 我的 csv header 每 30 行写一次,我知道有link 带有我输入的池参数,但如何纠正此行为

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)' 放在哪里以避免重复 header 吗? 谢谢

检查文件是否存在:

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

如果存在就不要再写header了。为 header 创建一个函数(def...),为数据创建另一个函数。

您指的 "header" 似乎来自 writer.writeheader() 行,而不是 writer.writerow() 行。

如果没有完整的代码片段,我只能假设您有类似外循环的东西环绕着 with open 块。因此,每次您的代码进入 with 块时,都会打印 header 行,然后是 30 行您抓取的数据(因为池大小)。