Write to a csv file scrapy

后端 未结 5 768
猫巷女王i
猫巷女王i 2021-01-01 21:16

I want to write to csv file in scrapy

 for rss in rsslinks:
  item = AppleItem()
  item[\'reference_link\'] = response.url
  base_url = get_base_url(response         


        
相关标签:
5条回答
  • 2021-01-01 21:22

    Try tablib.

    dataset = tablib.Dataset()
    dataset.headers = ["reference_link", "rss_link"]
    
    def add_item(item):    
       dataset.append([item.get(field) for fields in dataset.headers])
    
    for item in items:
        add_item(item)
    
    f.write(dataset.csv)
    

    0 讨论(0)
  • 2021-01-01 21:26

    You need to

    1. Write your header row; then
    2. Write the entry rows for each object.

    You could approach it like:

    fields = ["reference_link", "rss_link"] # define fields to use
    with open(filename,'a+') as f: # handle the source file
        f.write("{}\n".format('\t'.join(str(field) 
                                  for field in fields))) # write header 
        for item in items:
            f.write("{}\n".format('\t'.join(str(item[field]) 
                                  for field in fields))) # write items
    

    Note that "{}\n".format(s) gives the same result as "%s\n" % s.

    0 讨论(0)
  • 2021-01-01 21:30

    This is what worked for me using Python3:

    scrapy runspider spidername.py -o file.csv -t csv
    
    0 讨论(0)
  • 2021-01-01 21:33

    simply crawl with -o csv, like:

    scrapy crawl <spider name> -o file.csv -t csv
    
    0 讨论(0)
  • 2021-01-01 21:33

    Best approach to solve this problem is to use python in-build csv package.

    import csv
    
    file_name = open('Output_file.csv', 'w') #Output_file.csv is name of output file
    
    fieldnames = ['reference_link', 'rss_link'] #adding header to file
    writer = csv.DictWriter(file_name, fieldnames=fieldnames)
    writer.writeheader()
    for rss in rsslinks:
        base_url = get_base_url(response)
        writer.writerow({'reference_link': response.url, 'rss_link': urljoin_rfc(base_url, rss)}) #writing data into file.
    
    0 讨论(0)
提交回复
热议问题