常见爬网 - 获取WARC文件

时间:2017-09-19 18:41:22

标签: common-crawl

我想使用常规抓取检索网页,但我迷路了。

我想获取www.example.com的warc文件。我看到这个链接(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。

感谢您帮助一个菜鸟!

1 个答案:

答案 0 :(得分:3)

从JSON结果中获取文件名,偏移量和长度,以填充从$ offset到($ offset + $ length-1)的HTTP范围请求。添加https://commoncrawl.s3.amazonaws.com/作为filename的前缀,并使用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上可以使用Boto3AWS-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