Python написать TXT.Объединить фиксированный верхний и нижний колонтитулы с переменными данными в TXT - PullRequest
0 голосов
/ 09 марта 2019

У меня проблемы с завершением работы сканера (более конкретно в выходном файле в формате txt). Он должен иметь заголовок (h) и нижний колонтитул (p), который должен быть записан только один раз. И переменные данные (col), которые будут сгенерированы Scrapy. В настоящее время я включил верхний и нижний колонтитулы вручную и ищу способ автоматизации процесса. Я знаю, что простой текстовый файл не имеет верхнего и нижнего колонтитула . Но есть ли способ симулировать это, не прибегая к внешним модулям?

filename = item['cat'] + '.txt'

            f= open(filename,'a')
            h = ('As últimas notícias')
            p = ('Você só encontra aqui')
            col = ('item['title'] \n + item ['author']\n + item['img']\n\n+ item['news']')
            f.write('h \n + col \n + p')
            f.close()

Желаемый выход:

As últimas notícias

title here
author here
img link here
news here

title here
author here
img link here
news here

title here
author here
img link here
news here

title here
author here
img link here
news here

Você só encontra aqui

1 Ответ

1 голос
/ 10 марта 2019

Может быть, вы можете использовать конвейеры, как здесь: http://doc.scrapy.org/en/latest/topics/item-pipeline.html#write-items-to-a-json-file В open_spider вы будете создавать дескриптор файла и писать заголовок, в close_spider писать нижний колонтитул и закрывать дескриптор файла, а с помощью process_item вы можете писать свой контент.

Также вы можете проверить эту тему с похожей темой: Трубопровод Scrapy spider_opened и spider_closed не вызывается

UPD:

class MySpider(Spider):
    files = {}

    def parse(self, response):
         # create you item and then:
         if item['cat'] in self.files:
             f = self.files[item['cat']]
         else:
             f = open(item['cat'] + '.txt', 'a')
             f.write('As últimas notícias')
             self.files[item['cat']] = f

         f.write('col \n')

А затем на spider_closed итерируйте по self.files, пишите нижние колонтитулы и закрывайте дескрипторы.

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