我正在抓取特定网址。我在表中有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
}
}
}
}
它确实可以满足我的需求。 现在第一个代码出了什么问题?