CURL kullanarak sayfa gerçek HTML ayrıştırmak nasıl?

0 Cevap php

Ben sayfa içinde aşağıdaki yapılara sahip bir web sayfası kazımak için "çalışırken" am:

<p class="row">
    <span>stuff here</span>
    <a href="http://www.host.tld/file.html">Descriptive Link Text</a>
    <div>Link Description Here</div>
</p>

Ben Kıvrılmaları kullanarak web sayfasını kazıma ediyorum:

<?php
    $handle = curl_init();
    curl_setopt($handle, CURLOPT_URL, "http://www.host.tld/");
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $html = curl_exec($handle);
    curl_close($handle);
?>

Ben biraz araştırma yaptım ve ben düzelene döndürülen HTML ayrıştırmak için bir RegEx kullanmak gerektiğini buldum ve PHP DOM kullanmak gerektiğini var. Bu ben bunu yaptım nasıl:

$newDom = new domDocument;
$newDom->loadHTML($html);
$newDom->preserveWhiteSpace = false;
$sections = $newDom->getElementsByTagName('p');
$nodeNo = $sections->length;
for($i=0; $i<$nodeNo; $i++){
    $printString = $sections->item($i)->nodeValue;
    echo $printString . "<br>";
}

Şimdi ben tamamen bu anlıyorum ama yüreğin olsun taklidi değilim, ve ben isteyen am bölümleri olsun. Tek sorun benim tarayıcı penceresinin dışına kopyalanan sanki ne olsun, HTML sayfasının sadece metin olmasıdır. Ben bağlantıları ayıklamak ve bu yüzden gibi, onları da kullanmak istiyorum çünkü ne ben istiyorum gerçek HTML:

for($i=0; $i<$nodeNo; $i++){
    $printString = $sections->item($i)->nodeValue;
    echo "<a href=\"<extracted link>\">LINK</a> " . $printString . "<br>";
}

Gördüğünüz gibi ben istediğim gibi ben sadece, text web sayfasının değil source alıyorum, çünkü bağlantı alınamıyor. Ben sadece denedim çünkü "curl_exec" HTML çektiğini biliyorum, bu yüzden DOM nedense istiyorum HTML sıyırma olduğuna inanıyoruz.

0 Cevap