我爲我的一個客戶創建了一個刮板,刮板主要用於抓取幾個合作伙伴網站並獲取數據。刮刀的工作效率達到90頁,一旦達到90頁,它會一次又一次地報廢同一頁面。我真的很困惑,因爲這是爲什麼發生。使用Curl和php一次無法使用超過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頁和不斷拼搶,並在數據庫中更新它
它卡在下一頁。它並不總是第90頁。有時它的第88,89或90號。有沒有捲曲超時可能會讓它卡在同一頁面? –
嘗試添加'set_time_limit(0)' –
我無法獲取您的代碼的邏輯。你需要付出很大的努力才能將信息檢索到立即被覆蓋甚至根本不被使用的變量中。由於沒有明顯的原因,不斷將值附加到'$ requestHeaders'(因爲'getHTMLContentFromURL()'未公開),所以不可能知道它的用途。無論如何,你需要做一些基本的調試**。唯一指示你的代碼切換頁面的是來自數據庫查詢的外部循環:如果你一次又一次得到相同的結果,我懷疑的第一件事就是你的表有大量的愚蠢行爲。 –