PHP Kazıma Sayfa

3 Cevap php

Ben bilgileri ben içinde yalanlar arıyorum bir sayfa kazımak çalışıyorum:

 <tr class="defRowEven">
   <td align="right">label</td>
   <td>info</td>
 </tr>

Ben sayfanın dışında etiket ve bilgi almak için çalışıyorum. : Ben gibi bir şey yapıyor önce

$hrefs = $xpath->evaluate("/html/body//a");

Ben URL kapma ediyorum nasıl. O tr bilgi kapmak için bir yolu var mı? Bu regex veya DOMXPath kullanarak kullanmak daha iyi olurdu? I DOMXPath ile çok yabancı değilim ve herhangi bir bilgi daha yararlı olacaktır. Teşekkür ederiz!

3 Cevap

Ben XPath aşina değilim, fakat SimpleHtmlDom bunu yapabilirsiniz:

foreach($html->find('tr.defRowEven') as $row) {

    //get the 'label' (first cell)
    echo $row->find('td', 0)->innerText;

    //get the 'info' (second cell)
    echo $row->find('td', 1)->innerText;
}

XPath niteliklere dayalı seçebilirsiniz. Lütfen satır bulmak için, sonra kullanın:

$rows = $xpath->query("//tr[@class='defRowEven']");

Bu satır bir listesini döndürmek gerekir, böylece onları karıştırmadan her etiket ve bilgileri seçebilirsiniz:

foreach ($rows as $row) {
    $label = $xpath->evaluate("td[@align='right']", $row);
    $info = $xpath->evaluate("td[2]", $row);
}

Işe yaramazsa durumda, regex rotayı deneyebilirsiniz:

preg_match_all('/<tr class="defRowEven">\s*<td align="right">(.*?)<\/td>\s*<td>(.*?)<\/td>/',
    $html, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    list($full, $label, $info) = $match;
}

Burada son zamanlarda SO birisi bu tür bir şey kolay hale ÖNERİ php / sunucu-tarafı için jQuery phpQuery .. bir tür .. bir link verdi. Ben bunu denedim değil yani ilk elden yorum yapamam