普通爬取-获取WARC文件

Common crawl - getting WARC file

我想使用普通爬网检索网页,但迷路了。

我想获取 www.example.com 的 warc 文件。我看到这个 link (http://index.commoncrawl.org/CC-MAIN-2017-34-index?url=https%3A%2F%2Fwww.example.com&output=json) 产生以下 json.

{"urlkey": "com,example)/", "timestamp": "20170820000102", "mime": "text/html", "digest": "B2LTWWPUOYAH7UIPQ7ZUPQ4VMBSVC36A", "filename": "crawl-data/CC-MAIN-2017-34/segments/1502886105955.66/robotstxt/CC-MAIN-20170819235943-20170820015943-00613.warc.gz", "mime-detected": "text/html", "status": "200", "offset": "1109728", "length": "1166", "url": "http://www.example.com"}

谁能给我指出正确的方向,我如何使用这些 json 元素来检索 HTML。

感谢您帮助菜鸟!

从 JSON 结果中获取文件名、偏移量和长度,以填充从 $offset 到 ($offset+$length-1) 的 HTTP 范围请求。添加 https://commoncrawl.s3.amazonaws.com/ 作为文件名的前缀并使用 gzip 解压缩结果,例如

curl -s -r1109728-$((1109728+1166-1)) \
   "https://commoncrawl.s3.amazonaws.com/crawl-data/CC-MAIN-2017-34/segments/1502886105955.66/robotstxt/CC-MAIN-20170819235943-20170820015943-00613.warc.gz" \
| gzip -dc

当然,在 AWS 上可以使用 Boto3 or the AWS-CLI:

aws --no-sign-request s3api get-object \
 --bucket commoncrawl \
 --key crawl-data/CC-MAIN-2017-34/segments/1502886105955.66/robotstxt/CC-MAIN-20170819235943-20170820015943-00613.warc.gz \
 --range bytes=1109728-$((1109728+1166-1)) response.gz

如果只是少量文档,修改文档也无所谓,可以直接使用索引服务器:http://index.commoncrawl.org/CC-MAIN-2017-34/http://www.example.com