使用php抓取网站

时间:2014-07-13 12:01:32

标签: php domdocument

我正在抓取特定网址。我在表中有17个网址,应扫描地址并找到特定链接,然后阅读其内容以获取某些信息。 这部分代码:

$result=mysql_query("SELECT * FROM hosts") or die(mysql_error());
while($rec=mysql_fetch_array($result))
{ 
@$new_doc = new DOMDocument();
@$new_doc->loadHTMLFile($rec['url']);
foreach($new_doc->getElementsByTagName('a') as $link) 
{
    $href = $link->getAttribute('href');
    if(preg_match($url_pat,$href))
    {
        preg_match_all($house_code_pat,$href,$out);
        $house_code=trim($out[0][0],'-');
        mysql_query("INSERT INTO `mashhad` (`house_code`) VALUES ('".$house_code."')") or die();
        $error_no=mysql_errno();

        if($error_no==0)
        {
            echo $i++."<br>";

            @$doc = new DOMDocument();
            $url=$href;
            @$doc->loadHTMLFile($url);
        }

    }
}
}

我知道柜台应该以这种方式继续大约​​300回合,它只会持续约29或30或31。 当我删除第二个加载HTML并以这种形式执行时:

$result=mysql_query("SELECT * FROM hosts") or die(mysql_error());
while($rec=mysql_fetch_array($result))
{ 
@$new_doc = new DOMDocument();
@$new_doc->loadHTMLFile($rec['url']);
foreach($new_doc->getElementsByTagName('a') as $link) 
{
    $href = $link->getAttribute('href');
    if(preg_match($url_pat,$href))
    {
        preg_match_all($house_code_pat,$href,$out);
        $house_code=trim($out[0][0],'-');
        mysql_query("INSERT INTO `mashhad` (`house_code`) VALUES ('".$house_code."')") or die();
        $error_no=mysql_errno();

        if($error_no==0)
        {
            echo $i++."<br>";

            @$doc = new DOMDocument();
            // some piece removed

        }

    }
}
}

它确实可以满足我的需求。 现在第一个代码出了什么问题?

0 个答案:

没有答案