簡體   English   中英

使用Guzzle / Goutte時限制請求大小

[英]Limit the request size when using Guzzle / Goutte

我希望重新編寫一個Python腳本,該腳本會通過鏈接列表,然后從所獲取的頁面中提取幾天。

出現的一個問題是,如果鏈接是圖像或zip甚至是ISO,則我不想下載整個文件。 我可以嘗試檢查擴展名,但這並不總是有效。

在我的Python腳本中,我做了兩件事。

  • 連接到站點后,我將檢查內容類型標題。 Python似乎可以做到這一點,而無需下載整個文件。

  • 將我在請求中下載的URL數量限制為150kb。 由於我只是在關注HTML頁面,因此本文將進一步介紹。

我想在這個項目中使用Guzzle,但在查看文檔時,我不確定是否可以做到這一點。

我的主要問題是確保不下載ISO文件或視頻並使用所有RAM或帶寬。

來自guzzle 6文檔。 stream :設置為true可以流式傳輸響應,而不是預先下載所有響應。

您可以使用此功能僅下載前150 KB。

$client = new Client();
$response = $client->get($url, [
    'stream' => true,
]);
$body = $response->getBody();

$bytesRead = 0;
$dataRead = "";
while (!$body->eof()) {
    $data = $body->read(1024);
    $dataRead .= $data;
    $bytesRead += strlen($data);
    if($bytesRead >= 150*1024) {
        $body->close();
        throw new \Exception("exceeded download limit");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM