0

我正在从一个列出一些产品的网站上抓取,我已经将产品页面的 url 保存在数据库中,并循环遍历表格以获取 url 并使用简单的 html dom 解析器进行抓取,我正在使用以下代码。

<?php
error_reporting(E_ALL);
ignore_user_abort(true);
require_once('lib/simple_html_dom.php');
set_time_limit(0);
ini_set('memory_limit', '1024M');
ini_set('max_input_time ', '99999');
$catid = $_REQUEST['catid']; //passing category id from url
//getting category product url's from DB.
$query = mysql_query("select * from cat_prod where catid='".$catid."' ") or die(mysql_error());
if($query){

    while($arr = mysql_fetch_array($query)){

        $html = file_get_html($arr['purl']);

            if(is_object($html)){
                $i=1;   
                foreach ( $html->find('h1') as $elem ){
                    if(is_object($elem) && isset($elem))
                        echo $i.' : '.$elem->plaintext.'<br/>';
                    if($i==2) exit;
                $i++;   
                }
                $html->clear();
                unset($html);
            }
    }
}

?>

当我在一次迭代后终止执行时它很好,但不止一次它抛出连接中止错误。

4

1 回答 1

0

尝试在循环中加入睡眠。您可能正在使用 DOS 攻击来攻击该网站。

此外,您的脚本存在 SQL 注入问题$catid

于 2015-08-20T20:56:32.340 回答