Scrapy xml pipe - PullRequest
       9

Scrapy xml pipe

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

Мне нужно сделать паука, который должен выводить xml-файл для любой статьи.

pipe.py:

from scrapy.exporters import XmlItemExporter
from datetime import datetime

class CommonPipeline(object):
    def process_item(self, item, spider):
        return item

class XmlExportPipeline(object):
    def __init__(self):
        self.files = {}

    def process_item(self, item, spider):
        file = open((spider.name + datetime.now().strftime("_%H%M%S%f.xml")), 'w+b')
        self.files[spider] = file
        self.exporter = XmlItemExporter(file)
        self.exporter.start_exporting()
        self.exporter.export_item(item)
        self.exporter.finish_exporting()
        file = self.files.pop(spider)
        file.close()
        return item

Выход:

<?xml version="1.0" encoding="utf-8"?>
    <items>
        <item>
            <text_img> Nelson Argaña. Foto: Gustavo Velázquez 970AM. Hace 1 hora  </text_img>
            <title>Nelson Argaña lamentó que Mario Abdo esté rodeado de corruptos </title>
            <url>https://www.lanacion.com.py/politica/2019/03/23/nelson-argana-lamento-que-mario-abdo-este-rodeado-de-corruptos/</url>
            <content>    Nelson Argaña, hijo de Luis María Arg ...</content>
            <sum_content>4805</sum_content>
            <time>14:30:06</time>
            <date>20190323</date>
        </item>
    </items>

Но мне нужен такой вывод:

<?xml version="1.0" encoding="iso-8859-1"?>
    <article>
        <text_img> Nelson Argaña. Foto: Gustavo Velázquez 970AM. Hace 1 hora  </text_img>
        <title>Nelson Argaña lamentó que Mario Abdo esté rodeado de corruptos </title>
        <url>https://www.lanacion.com.py/politica/2019/03/23/nelson-argana-lamento-que-mario-abdo-este-rodeado-de-corruptos/</url>
        <content>    Nelson Argaña, hijo de Luis María Arg ...</content>
        <sum_content>4805</sum_content>
        <time>14:30:06</time>
        <date>20190323</date>
    </article>

settings.py:

ITEM_PIPELINES = {
    'common.pipelines.XmlExportPipeline': 300,
}
FEED_EXPORTERS_BASE = {
    'xml': 'scrapy.contrib.exporter.XmlItemExporter',
}

Я попытался добавить в settings.py:

FEED_EXPORT_ENCODING = 'iso-8859-1'
FEED_EXPORT_FIELDS = ["article"]

Но не работает.

Я использую Scrapy 1.4.0

...