2016-08-01 4 views
0

Ich hoffe, Scrapy zu verwenden, um durch STIX-Dokumente zu gehen, die Dokumente im Grunde wie einen RSS-Feed aufzustellen und dann durch sie zu "scrapen". Derzeit verwende ich nur Ipython und Scrapy Shell, um die XPaths zu bekommen.Verwenden Sie xpath und scrapy, um durch STIX-Dateien zu gehen?

<FileObj:Hashes> 
    <cyboxCommon:Hash> 
     <cyboxCommon:Type condition="Equals" xsi:type="cyboxVocabs:HashNameVocab-1.0">MD5</cyboxCommon:Type> 
     <cyboxCommon:Simple_Hash_Value condition="Equals">C71F2F84500E6AE4485C967F72BB9E52</cyboxCommon:Simple_Hash_Value> 
    </cyboxCommon:Hash> 
</FileObj:Hashes> 

Ich habe ‚scrapy‘ auf der Seite beschossen und ich versuche, die MD5-Hash C71F2F84500E6AE4485C967F72BB9E52 zu ziehen, alle MD5 ist auf der Seite werden wie diese aufgeführt.

Das ist, was ich habe, aber ich kann es nicht zur Arbeit kommen -

response.xpath("//cyboxCommon:Simple_Hash_Value[@condition=&quotEquals&quot]/text()").extract() 

unten bearbeitet -

response.xpath("//*[@condition='Equals']/text()").extract() 

das mir alle Text danach gibt, nicht nur md5 aber andere STIX-Infos, die nah sind, aber immer noch nicht funktionieren. Ich bin mir nicht sicher, ob das etwas mit dem Doppelpunkt in den Namen zu tun hat.

Ich würde mich über Vorschläge freuen, danke !!!

Antwort

0

OK so offensichtlich STIX hat einen eigenen Namensraum, dieses besondere Problem verwendet diese ein -

xmlns: CyBox = "http://cybox.mitre.org/cybox-2"

Um zu greift den Text aus der STIX-Datei ich hatte Namen zu verwenden() oder Sie verwenden können, local-name()

response.xpath("//*[name()='cyboxCommon:Simple_Hash_Value']/text()").extract() 

oder

response.xpath("//*/*[local-name()='Simple_Hash_Value']/text()").extract() 

Aber @granitosaurus was, wenn ich eine zusammengesetzte Aussage wollte? MD5 und dann dann? Ich kann das nicht zur Arbeit bringen ... lass es mich wissen, wenn du mich brauchst, um eine neue Frage zu stellen.

response.xpath("//*[name()='cyboxCommon:Type']/[text()='MD5']/following-sibling::[name()='cyboxCommon:Simple_Hash_Value']/text()").extract() 
+0

Ich fange nur eine neue Frage für das letzte an. – Dpitt1968

1

Scrapy Selector (oder jetzt Parsel Selector) entkommt und räumt die Tags etc. auf, wenn ein Baum zum Parsen erstellt wird.

In Ihrem Fall die XPath Sie suchen, ist:

response.xpath("//simple_hash_value[@condition='Equals']/text()").extract() 

Sie die gereinigt Baum anzeigen können einfach mit response.extract() zu sehen, wie Sie Ihren Baum jetzt aussieht.

+0

Dank @granitosaurus, das mir gerade gibt [] ... habe ich etwas, über dem ich hoffe, – Dpitt1968

+0

hilft @ mathurin68 Sie die wie funktioniert das gemacht Baum aussehen überprüft haben? Können Sie Ihre 'response.extract()' Ergebnisse einfügen? – Granitosaurus

Verwandte Themen