python 无法使用请求从Amazon s3流式传输文件

gmol1639  于 2023-04-19  发布在  Python
关注(0)|答案(1)|浏览(131)

我尝试从Common Crawl流式传输爬网数据,但当我使用stream=True参数获取请求时,Amazon s3出错。下面是一个示例:

resp = requests.get(url, stream=True)
print(resp.raw.read())

当我在一个Common Crawl s3 http url上运行这个命令时,我得到的响应是:

b'<?xml version="1.0" encoding="UTF-8"?>\n<Error><Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message><Key>crawl-data/CC-
MAIN-2018-05/segments/1516084886237.6/warc/CC-
MAIN-20180116070444-20180116090444-00000.warc.gz\n</Key>
<RequestId>3652F4DCFAE0F641</RequestId><HostId>Do0NlzMr6
/wWKclt2G6qrGCmD5gZzdj5/GNTSGpHrAAu5+SIQeY15WC3VC6p/7/1g2q+t+7vllw=
</HostId></Error>'

我正在使用warcio,需要一个流文件对象作为归档迭代器的输入,由于内存有限,a无法一次下载所有文件。我该怎么办?
PS.我在示例中请求的URL是https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-05/segments/1516084886237.6/warc/CC-MAIN-20180116070444-20180116090444-00000.warc.gz

qoefvg9y

qoefvg9y1#

您的URL中有一个错误。请比较您收到的响应中的键:

<Key>crawl-data/CC-
MAIN-2018-05/segments/1516084886237.6/warc/CC-
MAIN-20180116070444-20180116090444-00000.warc.gz\n</Key>

指向所需URL中的一个:

https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2018-05/segments/1516084886237.6/warc/CC-MAIN-20180116070444-20180116090444-00000.warc.gz

由于某些原因,您添加了不必要的空格,可能是在阅读文件时拾取的(readline()将在每行上为您提供尾随'\n'字符)。也许可以尝试调用.strip()来删除尾随的换行符。

相关问题