В Scrapy, с lxml, я создал собственный конвейер для генерации xml в соответствии с моими потребностями.Xml создается, но есть ошибка: следующая группа (элементы) в списке перезаписывает предыдущую.То есть независимо от len()
списка сохраняется только группа (элементы).Код ниже.Кто-нибудь мне поможет?
Даже ссылаясь на ту же тему, это не дубликат этого вопроса : PS: Как вы добавляете файл в Python? Ибо есть причуды, такие как сохранение верхних и нижних колонтитулов XML.
# -*- coding: utf-8 -*-
from yt.items import Lista
import lxml.etree
import lxml.builder
class ytXmlPipeline(object):
def process_item(self, item, spider):
E = lxml.builder.ElementMaker()
ITEMS = E.items
CHANNEL = E.channel
TITLE = E.title
LOGO= E.logo_30x30
SINOPSE = E.description
STREAM = E.stream_url
lista = ITEMS(
CHANNEL(
TITLE('<![CDATA['+item["title"]+']]>'),
LOGO('<![CDATA['+item["logo_30x30"]+']]>'),
SINOPSE('<![CDATA[<center><img height="254" width="200" src="'+item["logo_30x30"]+'"/><p>'+item["description"]+'</p></center>]]>'),
STREAM('<![CDATA['+item["stream_url"]+']]>'),
)
)
# create a new XML file with the results
mydata = lxml.etree.tostring(lista, encoding='utf-8', pretty_print=True, xml_declaration = True, method="xml")
mydata = mydata.replace('<','<').replace('>','>')
myfile = open("ytLista.xml", "w")
myfile.write(mydata)