我为我的一个客户创建了一个scrapper,刮刀主要用于抓取一些合作伙伴网站并获取数据。刮刀工作效果非常好,直到90页,一旦达到90页,就会一次又一次地刮掉同一页。我真的很困惑,为什么会发生这种情况。
有人可以帮我解决这个问题吗?
function getFlightCharges() {
$requestHeaders = requestHeaderProperties ();
$sql = 'select * from F_charge where enabled = 0';
$details = DatabaseHandler::GetAll ( $sql );
foreach ( $details as $detail ) {
$link = $detail ['product_link'];
$id = $detail ['id'];
$url = $link;
$referer = 'Referer: example.com/';
$requestHeaders [] = $referer;
$html = getHTMLContentFromURL ( $url, $requestHeaders );
foreach ( $html->find ( '.no-touch' ) as $e ) {
foreach ( $e->find ( '.content-well' ) as $e1 ) {
foreach ( $e1->find ( '.price' ) as $prices ) {
$pricee = strip_tags ( $prices->innertext );
}
foreach ( $e1->find ( '.article-body' ) as $desc ) {
$description = strip_tags ( $desc->innertext );
}
}
}
$sql = "INSERT INTO price_data(product_price) VALUES (:product_price)";
$params = array (':product_price' => $price);
DatabaseHandler::Execute ( $sql, $params );
}
DatabaseHandler::Close ();
}
所以这里是获取合作伙伴网站链接的功能,获取当前价格并更新我的数据库。它在第89页或第90页之前一直很好用。但不久之后它就停留在第90页并继续在数据库中进行抓取和更新
答案 0 :(得分:0)
但不久之后它就停留在第90页并继续在数据库中进行抓取和更新
基本上每个php脚本都是limited with a time it runs。某些服务器将其限制为30秒。因此,如果您处理90页,则可能会超出此脚本运行时限。
您的解决方案是:
cron
命令按计划执行脚本。