[英]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.