ウェブサイトからデータをスクラップできますが、XMLでエクスポートする必要があります。この目的のためにエクスポートされたXMLにスキーマで属性を追加する
私はそうのようなシリアライザを定義した:
class Person(scrapy.Item):
Name = scrapy.Field(serializer=serialize_name)
Location = scrapy.Field()
そしてそうのようなXMLExportPipeline:
class XmlExportPipeline(object):
def __init__(self):
self.files = {}
@classmethod
def from_crawler(cls, crawler):
pipeline = cls()
crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
return pipeline
def spider_opened(self, spider):
file = open('%s_people.xml' % spider.name, 'w+b')
self.files[spider] = file
self.exporter = XmlItemExporter(file, item_element='Person', root_element='People')
self.exporter.start_exporting()
def spider_closed(self, spider):
...
def process_item(self, person, spider):
self.exporter.export_item(person)
return person
これは動作し、私にそのようなXMLファイルを提供します:
<?xml version="1.0" encoding="utf-8"?>
<People><Person><Name>Bob</Name><Location>NYC</Location></Person></People>
タグに属性を追加するにはどうすればよいですか?たとえば、私が望むならば、
<Person Age="25" Likes="Programming">
どうすればいいですか?
また、出力XMLがフォーマットされていないのはなぜですか?like it is supposed to be?タグの値をCDATAに変換することはできますか?
お手数をおかけしていただきありがとうございます。これは間違いなく助かります。 – Zalarox