2013-02-03 20 views
6

Ekran görüntülerini yakalamak için shell_exec'i Xvfb ve FireFox ile kullanma. Ancak, tüm html'yi (ör. Sayfayı Farklı Kaydet -> Web Sayfası tamamlandı.) Shell_exec kullanarak bir dizine indirmeniz gerekir. Mozilla Developers Forumlarında bulunan tüm farklı seçeneklere göz attınız, ancak bunun nasıl yapılacağını anlayamadık.Başsız FireFox'u Kullanarak Tüm HTML dosyalarını Linux'taki komut satırını kullanarak kaydetme

Bu kod, gereksinim duyduğum şeyler gibi görünüyor, ancak bunun nasıl yapılacağı ve nasıl uygulanacağı kabuk_exec dosyasında erişilebilir olabilir?

var file = Components.classes["@mozilla.org/file/local;1"] 
.createInstance(Components.interfaces.nsILocalFile); 
file.initWithPath("C:\\filename.html"); 
var wbp = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] 
.createInstance(Components.interfaces.nsIWebBrowserPersist); 
wbp.saveDocument(content.document, file, null, null, null, null); 

The Above Code Source

void saveDocument(
in nsIDOMDocument aDocument, 
in nsISupports aFile, 
in nsISupports aDataPath, 
in string aOutputContentType, 
in unsigned long aEncodingFlags, 
in unsigned long aWrapColumn 
); 

The Above Code Source

Orada burada Stackoverflow manuel çözümdür ama shell_exec ele almaz: How to save a webpage locally including pictures,etc

cevap

1

bildiğim birkaç seçenek vardır ama Bildiğim hiçbiri tam olarak sorunuza uymuyor ..

  1. Açık firefox http://yoursite.com kabuğundan, daha sonra xte veya benzer bir yöntem kullanarak ateş tuş vuruşlarını göndermek. (Ancak bu başsız mod değildir.)
  2. Wget kullanarak karşıdan yükleyin. Yinelemeli olarak çalışabilir. Ya da oldukça basit bir web sayfasıysa, HTML'yi ayrıştırabilirsiniz. Form göndermeniz gerekiyorsa, wget yerine curl kullanın.
  3. Use greasemonkey addon & http://some-fake-page.com/?download=http://yoursite.com & ürününe yüklenmiş, sonra da bu sahte sayfa url'yle birlikte firefox'u açacak bir komut dosyası yaz.
  4. Yukarıdaki çalışmaların yapılması için kendi firefox eklentinizi geliştirin.

Bunun için başka daha iyi seçenekler de olabilir, ancak bunları bilmiyorum.

+0

Teşekkürler. Üç numaralı cevabın anahtar olabileceğini düşünüyorum. Ve, Mozilla tarafından sağlanan kod snippet'lerinin nasıl veya ne yaptığı (Örn: Bir Örnek)? Bunlardan birkaç tane var ama onlarla ne yapacağına dair bir açıklama yok. Cevabınız üçü doğrudan bunları kullanmanın yolu olabilir. – user2036418

+0

Mozilla kod parçacıklarını doğrudan bir greasemonkey komut dosyasından kullanabiliyorsanız emin değilim. (Ama yanılıyor olabilirim.) Doğrudan özel bir eklentiden kullanılabilirler. Ancak, GM, mozilla API'lerinden bazılarını kullanmak için bir sarmalayıcı işlevi sağlar. – anishsane