2017-02-20 6 views
0

私はWebクローラで作業しています。私はこの特定のサイトでそれを試したとき、それはいくつかのサイト、 のために働いた、それは何も来なかった。エラーなし。コードがようになりPHP DOM Webクローラーは「何も印刷しません」。エラーなし、何もなし

私が間違っていたのだろうか

..:

<?php 
    require_once('dom/simple_html_dom.php'); 
    $html = file_get_html('http://www.studentdoc.com/phpBB2/viewforum.php?f=18&sid=2a150b97528c8ec47600692cc77daaf3'); 
    $elementCount=0; 
    foreach($html->find('dl.icon a') as $elemen) { 
    foreach($elemen->find('dt a') as $element) { 
    $elementCount++; 
    $element->href = "http://www.usmleforum.com" . $element->href; 
    echo '<li target="_blank" class="itemtitle">'; 
    if($elementCount < 5 && $elementCount > 2 && rand(0,1) == 1) { 
    echo '<span class="item_new">new</span>'; 
} 
    echo $element; 
    echo '</li>';       
    if($elementCount==12){ 
     break; 
    } 
} 
} 
?> 

HTML構造のため下記のリンクからアクセスしてください。..

http://www.studentdoc.com/phpBB2/viewforum.php?f=18&sid=2a150b97528c8ec47600692cc77daaf3

すべてのヘルプ

+0

これまでに行ったトラブルシューティングの手順とその結果を追加する必要があります。 – mkaatman

+0

何も男..何も印刷しません。 – harishk

+0

メッセージをそこに追加してください。各ループの内部にエコーを入れて、どれくらいの距離にあるかを確認するなどの基本的なトラブルシューティング。エラーログを有効にして、何かが得られるかどうかを確認します。 URLを取得した後、htmlに値があるかどうかを確認します。 – mkaatman

答えて

1

DOM要素がありませんdl.icon a dt aのように。 dl.icon dt aを取得することをお勧めします。 findメソッドの最初の引数からaを削除します。

質問をする前に、常にコードをデバッグしてみてください。単純なecho "A"; die(); echo "B"; die();すべての文の後に非常に役に立ちます:)

この場合、2番目のforeachは常に0個の要素を持っています。

+0

ohh man ..どうして私はそれを逃してしまったのですか..別のもの..あなたが私のコードで見たように私はif文をサイトの12文だけ出力します。それはちょっと実行されません..なぜか分かります – harishk

+0

Becouse $ elementCount 0 – Marek

+0

ですが、 'for each'ステートメントでは '$ elementCount ++; 'を返しました – harishk

関連する問題