PHP ile web sitesinden veri ayıklamak

5 Cevap php

Ben bazı arkadaşlar için basit bir uyarı uygulaması oluşturmak çalışıyorum.

Temelde i folowing iki gibi bir web sayfasından veri "fiyat" ve "stok durumunu" ayıklamak mümkün olmak istiyorum:

Ben e-mail ve sms yoluyla parçası uyarıyı yaptık ama şimdi i mevcut fiyat ve miktar karşılaştırın ve bizi uyarmak böylece web sayfalarının dışında miktar ve fiyat (bu 2 ya da herhangi bir başka olanlar) elde edebilmek istiyorum bir ürün, bazı eşikleri arasında ise bir düzen yapmak için.

Ben bazı regex çalıştı (bazı öğreticiler bulundu, ancak bu i bir yol çok n00b) ancak bu çalışma, herhangi bir iyi ipuçları veya örnek almak için yönetilen değil mi?

5 Cevap

Bu durumda bunun için google gerekir, ekran kazıma denir.

Ben bunun yerine bir dom ayrıştırıcı ve XPath ifadeleri kullanmanızı öneririm. Geçerli biçimlendirme olduğundan emin olmak için, ilk HtmlTidy aracılığıyla HTML besleyin.

Örneğin:

$html = file_get_contents("http://www.example.com");
$html = tidy_repair_string($html);
$doc = new DomDocument();
$doc->loadHtml($html);
$xpath = new DomXPath($doc);
// Now query the document:
foreach ($xpath->query('//table[@class="pricing"]/th') as $node) {
  echo $node, "\n";
}

Her ne yapmak: HTML veya ayrıştırmak için normal ifadeler kullanmayın bad things will happen. Bunun yerine, bir parser kullanın.

1st, bu soruyu soran çok detaya gider. 2. Bir web sitesinden veri ayıklanması meşru olmayabilir. Ancak, ipuçları var:

  1. Ilginç bilgi HTML içeriğini ve şeklini araştırmak için Firebug veya Chrome / Safari Müfettiş kullanın

  2. Maç olmadığını görmek için RegEx sınayın. Bunu yapmak birçok kez (multi-pass ayrıştırma / çıkarma) gerekebilir

  3. CURL ile veya hatta çok basit bir istemci yazmak, file_get_contents kullanabilirsiniz (NOT bazı file_get_contents ile devre dışı yükleme URL'leri hosting)

Benim için, ben daha iyi geçerli XHTML dönüştürmek için Tidy kullanabilirsiniz ve daha sonra yerine RegEx'in veri ayıklamak için XPath kullanmak istiyorum. Neden? XHTML düzenli değildir ve XPath çok esnek olduğu için. Dönüştürmek için XSLT öğrenebilirsiniz.

İyi şanslar!

Web veri ayıklamak için basit yöntem. Benim tüm veriler tek etiketi içinde kaplı olduğunu analiz ettik, bu yüzden bu bir hazırladım.

<?php
    include(‘simple_html_dom.php’);
        // Create DOM from URL, paste your destined web url in $page 
        $page = ‘http://facebook4free.com/category/facebookstatus/amazing-facebook-status/’;
        $html = new simple_html_dom();

       //Within $html your webpage will be loaded for further operation
        $html->load_file($page);

        // Find all links
        $links = array();
        //Within find() function, I have written h3 so it will simply fetch the content from <h3> tag only. Change as per your requirement.
       foreach($html->find(‘h3′) as $element) 
        {
            $links[] = $element;
        }
        reset($links);
        //$out will be having each of HTML element content you searching for, within that web page
        foreach ($links as $out) 
        {
            echo $out;
        }                

?>