HTML sayfayı çekip MYSQL-How için saklayın

4 Cevap php
  • MYSQL veritabanı üzerinde CSS ile biçimlendirilmiş bir html sayfası depolamak için en iyi yolu nedir? Bu mümkün mü?
  • Sütun türü ne olmalıdır? Saklanan biçimlendirilmiş HTML almak ve PHP kullanarak doğru görüntülemek nasıl?

  • Ne sayfa eğer vardır resimlerinizi ve videolarınızı almak istiyorum, gösteri ben blob olarak sayfayı saklayın

  • - .., Fopen, PHP-CURL kullanarak bir sayfa almak için en iyi yolu nedir?

Birçok soru adamlar ama ben gerçekten bunu yapmak için doğru yolda beni koymak için sizin yardımınıza ihtiyacımız var.

Çok teşekkürler.

4 Cevap

Oldukça basit, ben senin için yapılan bu kodu deneyin.

Bir DB kaynak kapmak ve kaydetmek için temelleri bulunuyor.

Ben hata işleme koymak ya da başka ne olursa olsun, sadece şu an için basit tutmak istemedim ...

Ben sonuç göstermek için işlevini yapılmış değildi, ama sonuç görüntülemek için $ kaynak yazdırabilirsiniz.

Bu size yardımcı olacağını umuyoruz.

<?php

function GetPage($URL)
{
    #Get the source content of the URL
    $source = file_get_contents($URL);

    #Extract the raw URl from the current one
    $scheme = parse_url($URL, PHP_URL_SCHEME); //Ex: http
    $host = parse_url($URL, PHP_URL_HOST); //Ex: www.google.com
    $raw_url = $scheme . '://' . $host; //Ex: http://www.google.com

    #Replace the relative link by an absolute one
    $relative = array();
    $absolute = array();

    #String to search
    $relative[0] = '/src="\//';
    $relative[1] = '/href="\//';

    #String to remplace by
    $absolute[0] = 'src="' . $raw_url . '/';
    $absolute[1] = 'href="' . $raw_url . '/';

    $source = preg_replace($relative, $absolute, $source); //Ex: src="/image/google.png" to src="http://www.google.com/image/google.png"

    return $source;
}

function SaveToDB($source)
{
    #Connect to the DB
    $db = mysql_connect('localhost', 'root', '');

    #Select the DB name
    mysql_select_db('test');

    #Ask for UTF-8 encoding
    mysql_query("SET NAMES 'utf8'");

    #Escape special chars
    $source = mysql_real_escape_string($source);

    #Set the Query
    $query = "INSERT INTO website (source) VALUES ('$source')"; //Save it in a text row, that's it...

    #Run the query
    mysql_query($query);

    #Close the connection
    mysql_close($db);
}

$source = GetPage('http://www.google.com');

SaveToDB($source);

?>

Fopen kullanarak tüm sayfayı aşağı çekin ve (görüntüleri ve css gibi) herhangi bir URL ayrıştırmak. Sen sayfayı oluşturmak dosyaları için adresler her kapmak için bir döngü çalıştırmak isteyeceksiniz. De bu saklayın ve diğer sitelere bağlantı için kullanılan adresler yeni bağlantıları ile dosyaları değiştirin. (Dosyaları değiştirmek gerekir ya da gelecekte kaldırılabilecek bu sorunları önlemek olacaktır).

Eğer bir tablodaki tüm dosyaları saklamak sağlayacak çünkü ben bir blob veri türünü kullanarak tavsiye ediyorum, ama görüntüleri ve diğer dosyaları saklamak için blob ile bir metin veri türü ve başka sayfalar için bir tablo yapabiliriz.

Edit: If you are storing as a blob datatype look into base64_encode() it will increase the storage footprint on the server but you'll avoid any issues with quotes and special characters.

Dosyaları saklamak için bir ilişki veritabanı kullanmayın. Bir dosya sistemi veya bir NoSQL çözümü kullanın.

Sen (htdig ve httrack akla gelen) mevcut çeşitli açık kaynak örümcek içine bakmak isteyebilirsiniz.

Ben bir veritabanında URL'leri saklamak ve kendi anahtarlı yerel dizinleri içinde saklayarak, düzenli wget sayfalara cron işi yapmak istiyorum. wget sayfayı önbelleğe izin ve isteğe vb kendi görüntüleri, komut dosyalarını, önbellek .. de olacak kullanma. Her şeyi önbelleğe zorunda kalmamak Ayrıca wget komutu gömülü URL'leri değiştirmek olabilir.

Here is the man page for wget, ayrıca "wget ​​yedek web sitesi" veya benzer aramayı düşünebilirsiniz.

("Anahtarlı dizinleri" derken veritabanı tablo 2 alanları, bir 'anahtar' ve 'url' olurdu demek, [benzersiz] 'anahtar' o zaman {[(0 kullanarak web arşiv yolu olacaktır )]}.)