2017-02-20 120 views
0

我一直在使用网络爬虫。它为少数网站, 现在当我试过这个特定的网站,它什么都没有。没有错误没有。PHP DOM Web Crawler打印“没有”。没有错误,没有什么

我不知道哪里出了问题..

的代码放在为:

<?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();之后每次发言都会非常有帮助:)

在这种情况下第二个foreach一直有0个元素。

+0

ohh man ..我是怎么错过的...和另一个..就像你在我的代码中看到的,我把如果声明仅用于打印12个声明从网站..它有点不执行..你知道为什么 – harishk

+0

Becouse $ elementCount总是为0 – Marek

+0

,但是在'for each'语句中,我给了'$ elementCount ++;' – harishk