экспорт данных в отдельные CSV-файлы в Scrapy - PullRequest
0 голосов
/ 29 октября 2019

Я создал сканер scrapy, который переходит на этот сайт https://www.cartoon3rbi.net/cats.html, затем по первому правилу откройте ссылку на каждое шоу, получите его название методом parse_title, а по третьему правилу откройте ссылку на каждый эпизод и получите его имя. все работает нормально, мне просто нужно знать, как я могу создать отдельный файл CSV для имен эпизодов каждого шоу с заголовками в методе parse_title, используемом в качестве имени файла CSV. Есть предложения?

# -*- coding: utf-8 -*-
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule


class FfySpider(CrawlSpider):
    custom_settings = {
        'CONCURRENT_REQUESTS': 1
    }
    name = 'FFy'
    allowed_domains = ['cartoon3rbi.net']
    start_urls = ['https://www.cartoon3rbi.net/cats.html']

    rules = (
        Rule(LinkExtractor(restrict_xpaths='//div[@class="pagination"]/a[last()]'), follow=True),
        Rule(LinkExtractor(restrict_xpaths='//div[@class="cartoon_cat"]'), callback='title_parse', follow=True),
        Rule(LinkExtractor(restrict_xpaths='//div[@class="cartoon_eps_name"]'), callback='parse_item', follow=True),
    )

    def title_parse(self, response):

        title =  response.xpath('//div[@class="sidebar_title"][1]/text()').extract()


    def parse_item(self, response):
        for el in response.xpath('//div[@id="topme"]'):
             yield {
                 'name': el.xpath('//div[@class="block_title"]/text()').extract_first()

             }

1 Ответ

0 голосов
/ 29 октября 2019

Предполагая, что заголовки хранятся в списке titles, а соответствующее содержимое хранится в списке contents, вы можете каждый раз вызывать следующую пользовательскую функцию write_to_csv(title, content), чтобы записать содержимое в файл и сохранить его с помощьюимя <title>.csv.

def write_to_csv(title, content=''):
    # if no content is provided, 
    # it creates an empty csv file.
    with open(title+'.csv', 'w') as f:
        f.write(content)

for content, title in zip(contents, titles):
    write_to_csv(title, content)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...