2016-10-10 4 views
1

Ich versuche, den Export der Medien Wiki Xml mit Casperjs zu automatisieren, wie wir keinen Zugriff über die Maschine, die es hostet. Das Problem ist das Herunterladen der xml als eine Post-Anfrage, die die Antwort ist die XML. Zur Zeit habe ich folgendes (Another Ticket auf Stack-Überlauf gebracht hat, diesen Code sein)CasperJS und Automatisierung von XML-Export von Mediawiki

casper.then(function(){ 
     var theFormRequest = this.page.evaluate(function() { 
      var request = {}; 
      var formDom = document.forms[0]; 
      formDom.onsubmit = function() { 
       //iterate the form fields 
       var data = {}; 
       for(var i = 0; i < formDom.elements.length; i++) { 
       data[formDom.elements[i].name] = formDom.elements[i].value; 
      } 
      request.action = formDom.action; 
      request.data = data; 
      return false; //Stop form submission 
     } 

     var link = $(".visualClear").submit();  
     return request; 
    }); 


     this.echo("DOWNLOADING " + theFormRequest.action + " " + theFormRequest.data); 
     casper.download(theFormRequest.action, "downloaded_file.xml", "POST", theFormRequest.data); 
    }); 

I resource.received Ereignis verwendet habe, aber das gibt mir nur die Meta-Daten der Antwort nicht die eigentlichen Daten. Derzeit wird die HTML-Seite heruntergeladen und nicht die XML-Datei. Ich kann bestätigen, dass auf die Schaltfläche geklickt wird, als würde ich die formDom.onSubmit-Datei entfernen. Resource.received zeigt, dass der content.type, der zurückkommt, XML ist.

Obwohl die verschiedenen in Klassen von meiner mediawiki verwendet, hier ist die Mediawiki Seite https://www.mediawiki.org/wiki/Special:Export

Dank

bearbeiten genau die gleiche Sache zu tun Hier ist die Antwort, wenn sie durch-Browser

Accept-Ranges:bytes 
Age:0 
Connection:keep-alive 
Content-disposition:attachment;filename=file-20161010165904.xml 
Content-Length:172717 
Content-Type:application/xml; charset=utf-8 
Date:Mon, 10 Oct 2016 16:59:04 GMT 
Server:nginx 
Via:1.1 varnish 
X-Content-Type-Options:nosniff 
X-Powered-By:HHVM/3.15.1 
X-Varnish:1482412076 
+0

Ich bin nicht sicher über die Antwort auf Ihre Frage, aber wenn Sie versuchen, einen vollständigen Download eines Wikis zu ziehen, könnten Sie die Wikiteam-Archivierungswerkzeuge interessiert sein: https://github.com/WikiTeam/Wikiteam –

Antwort

0

Was ich tun würde:

casper.start(); 

casper.open('http://url_to_mediawiki', { 
     method: 'GET', 
     headers: { 
      'Content-Type': 'application/xml; charset=utf-8', 
     }, 
     encoding: 'utf8' 
    } 
}) 

casper.then(function() { 
    this.echo(this.getPageContent()); 
}) 

getPageContent() ist Inhalt Agnostiker, es ist flexibel. Es rendert nur, was es findet. Überprüfen Sie casper#getpagecontent und casper#open