我尝试从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
1条答案
按热度按时间qoefvg9y1#
您的URL中有一个错误。请比较您收到的响应中的键:
指向所需URL中的一个:
由于某些原因,您添加了不必要的空格,可能是在阅读文件时拾取的(
readline()
将在每行上为您提供尾随'\n'字符)。也许可以尝试调用.strip()
来删除尾随的换行符。