Tam bir web sayfası kaydet

5 Cevap php

Bir projede çalışırken ben bir sorun rastladım ettik. Ben ilgi bazı web siteleri "tarama" ve onlar için bir ayna oluşturmak için stilleri ve görüntüler dahil olmak üzere "tam bir web sayfası" olarak kaydetmek istiyorum. Bu kesmek var ve sahibi veritabanının yedeğini yoktu çünkü web sitesi aşağı oldu sonra ve birkaç gün sonra okumak için bir web sitesi imi bana birkaç kez oldu.

Tabii ki, ben fopen("http://website.com", "r") veya fsockopen() ile çok kolay php ile dosyaları okuyabilir ancak ana hedefi durumunda aşağı gider böylece tam web sayfaları kaydetmek için, hala olabilir bir "programlama zaman makinesi" :) gibi başkalarına kullanılabilir

Okuma ve sayfadaki her linki kaydetmek olmadan bunu yapmak için bir yolu var mı?

Ben de bunu daha anlamaya çalışıyorum beri Objective-C çözümleri de açığız.

Teşekkürler!

5 Cevap

You actually need to parse the html and all css files that are referenced, which is NOT easy. However a fast way to do it is to use an external tool like wget. After installing wget you could run from the command line wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://example.com/mypage.html

This will download the mypage.html and all linked css files, images and those images linked inside css. After installing wget on your system you could use php's system() function to control programmatically wget.

NOTE: düzgün css dosyaları aracılığıyla referanslar görüntüleri kaydetmek için en az wget 1,12 gerekir.

Okuma ve sayfadaki her linki kaydetmek olmadan bunu yapmak için bir yolu var mı?

Kısa cevap: Hayır.

Daha uzun cevap: Eğer bir web sitesi her sayfayı kaydetmek istiyorsanız, belli bir düzeyde something ile bir web sitesi her sayfayı okumak zorunda gidiyoruz.

Muhtemelen ne istediğinizi gibi bir şey yapabilir Linux uygulaması wget, içine bakarak değer.

Bir sözcük uyarı - siteler genellikle böylece diğer sitelere bağlantılar ve diğer sitelere, dışarı bağlantıları var. Emin sen örümcek stop if different domain durumun çeşit koymak olun!

If you prefer an Objective-C solution, you could use the WebArchive class from Webkit.
It provides a public API that allows you to store whole web pages as .webarchive file. (Like Safari does when you save a webpage).

Bazı güzel özellikleri webarchive format:

  • completely self-contained (incl. css, scripts, images)
  • QuickLook destek
  • decompose Kolay

Ne olursa olsun app çalışma (bulmak kod veya kod) yapacağını tam olarak bunu yapmak zorunda olacak: Bir sayfayı indirmek dış kaynakların ve diğer sayfalara bağlantıları başvurular için bunu ayrıştırmak, ve o tüm indir şeyler. Bu web nasıl çalışır.

Ama daha ziyade kendinizi kaldırırken ağır yaparak daha, neden curl değil kontrol ve wget? Çoğu Unix benzeri işletim sistemleri üzerinde standart konum, ve tam olarak ne istediğinizi hemen hemen yapmak. Bu madde için, tarayıcı (muhtemelen o da bu program zor olurdu ama) en azından bir tek sayfa olarak da, yok.

Ben 'tarama web siteleri' ya şahsen çevrimdışı görüntüleme için web kaydetmek için gereken bir programlama çözüm gerekiyorsa emin değilim, ama ikincisi ise, Windows için harika bir uygulama var - Teleport Pro ve {[( 1)]} Mac için.