Scrapy 2.0.1: как определить порядок вывода? - PullRequest
1 голос
/ 29 марта 2020

при извлечении мой порядок вывода не совпадает с моим письменным порядком в файле паука / элемента.

Например:

  def parse(self, response):

        complete_article = response.xpath('//div[@class="storywrapper"]')

        for article in complete_article:
            dachzeile = article.xpath('.//div[@class="meldungHead"]/h1/...
            headline = article.xpath('.//div[@class="meldungHead"]/h1/...
            date = article.xpath('//meta[@name="date"]...
            datum = date.split("T")[0]
            uhrzeit = date.split("T")[1]
            ueberschrift = article.xpath('.//div[@class="mod ....
            text = article.xpath('//div[@class="storywra...
            relative_image = article.xpath('//div[@class="media ...
            final_image = self.base_url + relative_image
            url = response.url.encode('utf-8')

            items = testItem()

            items['Dachzeile'] = dachzeile
            items['Titel'] = headline
            items['Datum'] = datum
            items['Zeit'] = uhrzeit
            items['Einleitung'] = ueberschrift
            items['Artikel'] = text
            items['Bild'] = final_image
            items['Adresse'] = url

            yield items

Но вывод в json - файл выглядит так:

[
  {
    "Artikel": "....",
    "Einleitung": "...",
    "Titel": "...",
    "Zeit": "19:43:10",
    "Datum": "2020-03-28",
    "Adresse": "....html",
    "Bild": "...,
    "Dachzeile": "...,
  }
]

Как мне установить порядок для выходного файла?

С уважением и заранее спасибо!

1 Ответ

0 голосов
/ 29 марта 2020

Вы можете использовать OrderedDict для поддержания порядка

из коллекции импортов OrderedDict

    for article in complete_article:
        ... your code

        items = OrderedDict()

        items['Dachzeile'] = dachzeile
        items['Titel'] = headline
        items['Datum'] = datum
        items['Zeit'] = uhrzeit
        items['Einleitung'] = ueberschrift
        items['Artikel'] = text
        items['Bild'] = final_image
        items['Adresse'] = url

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