我希望重新编写一个Python脚本,它通过一个链接列表,然后从它获取的页面中提取几天。
出现的一个问题是,如果链接是图像或zip或甚至是ISO,我不想下载整个文件。我可以尝试检查扩展名,但这并不总是有效。
在我的Python脚本中,我做了两件事。
连接到网站后,我会检查内容类型标题。 Python似乎无需下载整个文件即可完成此操作。
将我在请求中下载的网址数限制为150kb。由于我只是在HTML页面之后,所以它更多地涵盖了它。
我想在这个项目中使用Guzzle,但查看文档我不确定是否可以这样做。
我的主要问题是确保我没有下载ISO文件或视频并使用所有RAM或带宽。
答案 0 :(得分:2)
来自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");
}
}