DOMDocument ve XPath kullanarak çocuk divs Erişme

0 Cevap php

Ben kişisel kullanım için temel bir ekran kazıyıcı bina ve öğrenme amaçları, bu yüzden vb "izin istemek gerekir" gibi yorumlar göndermeyin lütfen değilim

Aşağıdaki gibi erişmeye çalışıyorum veriler yapılandırılmış:

<tr>
    <td>
        <div class="wrapper">
            <div class="randomDiv">
                <div class="divContent">
                    <div class="event">asd</div>
                    <div class="date">asd</div>
                    <div class="venue">asd</div>
                    <div class="state">asd</div>
                </div>
            </div>
        </div>
    </td>
</tr>

Ben (yaklaşık 20 satır verilen sayfada olduğu gibi) tüm bu verileri toplamak için çalışılıyor.

Ben ihtiyacım verileri toplamak başardı aşağıdaki kodu kullanarak:

$remote = file_get_contents("linktoURL");

$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$file = @$doc->loadHTML($remote);
$rows = $doc->getElementsByTagName('tr');
$xp = new DOMXpath($doc);

//initialize variables
$rows = array();

foreach($xp->query('//*[contains(@class, \'wrapper\')]', $doc) as $found) {
    echo "<pre>";
    print_r($found->nodeValue);
}

Şimdi soru nasıl aşağıdaki gibi bir ilişkisel dizi içine tüm bu verileri depolamak hakkında gitmek olduğunu:

Array (
    [0] => Array
        (
            [Event] => Name
            [Date] => 12/12/12
            [Venue] => NameOfPlace
            [state] => state
        )

    [1] => Array
        (
            [Event] => Name
            [Date] => 12/12/12
            [Venue] => NameOfPlace
            [state] => state
        )

    [2] => Array
        (
            [Event] => Name
            [Date] => 12/12/12
            [Venue] => NameOfPlace
            [state] => state
        )

)

Şu anda, akla gelen tek çözüm foreach döngü içinde her sınıf adının //*[contains(@class, \'className\')] için XPath sorgusu aramak olacaktır.

Ben yukarıda bir veri ilişkisel dizi oluşturmak mümkün duyuyorum neyin DOMDocument ve XPath yoluyla daha deyimsel bir yolu var mı?

edit:

Ben daha kolay olabilir başka çözümler varsa, sonra onları gönderin, DOMDocument ve XPath kullanarak sınırlı değilim.

0 Cevap