Экспорт очищенных данных в CSV - PullRequest
0 голосов
/ 12 декабря 2018

Может кто-нибудь объяснить мне, как экспортировать извлеченные данные из этого сценария в CSV через сценарий Python?Кажется, что я успешно копирую данные через вывод, который я вижу, но я не уверен, как эффективно поместить это в CSV.Спасибо.

import scrapy
import scrapy.crawler as crawler

class RedditbotSpider(scrapy.Spider):
    name = 'redditbot'
    allowed_domains = ['www.reddit.com/r/gameofthrones/']
    start_urls = ['https://www.reddit.com/r/gameofthrones/']
    output = 'output.csv'  

    def parse(self, response):
        yield {'a': 'b'}
        #Extracting the content using css selectors
        titles = response.css('.title.may-blank::text').extract()
        votes = response.css('.score.unvoted::text').extract()
        times = response.css('time::attr(title)').extract()
        comments = response.css('.comments::text').extract()

        #Give the extracted content row wise
        for item in zip(titles,votes,times,comments):
            #create a dictionary to store the scraped info
            scraped_info = {
                'title' : item[0],
                'vote' : item[1],
                'created_at' : item[2],
                'comments' : item[3],
            }

            #yield or give the scraped info to scrapy
            yield scraped_info

def run_crawler(spider_cls):
    """
    spider_cls: Scrapy Spider class
    settings: Scrapy settings
    returns: Twisted Deferred
    """
    runner = crawler.CrawlerRunner()
    return runner.crawl(spider_cls)     # return Deferred


def test_scrapy_crawler():
    deferred = run_crawler(RedditbotSpider)

    @deferred.addCallback
    def success(results):
        """
        After crawler completes, this function will execute.
        Do your assertions in this function.
        """

    @deferred.addErrback
    def error(failure):
        raise failure.value

    return deferred

test_scrapy_crawler()

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете включить конфигурацию Feed Exporter в настройках перед запуском паука.Так что для вашего кода попробуйте изменить:

runner = crawler.CrawlerRunner()

с

runner = crawler.CrawlerRunner({
    'FEED_URI': 'output_file.csv',
    'FEED_FORMAT': 'csv',
})

Элементы вывода должны находиться внутри файла output_file.csv в том же каталоге, в котором вы запускаете этот скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...