2017-01-24 2 views
0

ich es geschafft, alle Bild-URLs zu kratzen und sie geben das Bild Ergebnisfeld korrekt wie folgt:Format Scrapy Bildfeld Ausgabe in XML

'image': [{'checksum': 'c2cc74b428a3fb18d6ac8d47978c98cb', 
     'path': 'full/33032b22901636542bef9dd6d3b6e98d1f7eb463.jpg', 
     'url': 'image-url.com/ID7b6b6700-0000-0500-0000-000003422a59.jpg'}, 
     {'checksum': '3c21a99a0d45870e4ab79f201f97c35e', 
     'path': 'full/8f7d216aee4942987860c77efff0595bfcdccdf9.jpg', 
     'url': 'http://image-url.com/ID7b6b6700-0000-0500-0000-000003422a5b.jpg'}] 

Ich versuche, das Bild Pfad in einem XML-Knoten <image>, zu wickeln aber ich kann nicht wirklich herausfinden, was der richtige Ansatz wäre. Gerade jetzt, ich denke, die Ausgabe der Art und Weise ist es, weil es ein iterable Wert ist, der aus einer Liste kommt:

<image> 
<value> 
<url> 
http://image-url.com/ID0df36700-0000-0500-0000-00000346f2d2.jpg 
</url> 
<path>full/8df264408df9bb24e7d750f61828239534d96497.jpg</path> 
<checksum>d87852609293934aa91edd649d3051aa</checksum> 
</value> 
</image> 

ich die Ausgabe möchte die folgenden für jedes Bild Weg sein, da ich nicht tun müssen die anderen Felder:

<image>full/8df264408df9bb24e7d750f61828239534d96497.jpg</image> 

ich habe versucht, eine Serializer Funktion anzuwenden, um das Feld zu formatieren, aber ich kann es wirklich nicht einen neuen Knoten pro Bildpfad zur Ausgabe erhalten. Könnte ich ein paar Hinweise auf die richtige Richtung haben?

+0

Sind und Kinder von ? – user2775128

+0

ist ein direktes Kind von und , und sind Kinder von . Entschuldigung, wenn die Formatierung deaktiviert ist – madu

Antwort

1
import xml.etree.ElementTree as ET 
tree = ET.parse('file.xml') 
root = tree.getroot() 
for child in root[0]: 
    if child.tag == url: 
     url = child.text 
    if child.tag == path: 
     path = child.text 
    print child.tag,child.text 

wenn "Bild" root ist dann "Wert" wird root [0] "url" und "Pfad" wird root [0] 's Kind

, wenn Sie viel „Wert haben "können Sie die for-Schleife verwenden, um root [x] zu ändern.

+0

Das ist ein guter Workaround. Ich werde jedoch immer noch versuchen, es durch Scrapy zu tun und nicht die endgültige XML-Ausgabe zu bearbeiten. Wird aktualisiert, wenn ich zu einer Schlussfolgerung komme – madu