常见爬取——获取WARC文件

MAB*_*MAB 2 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", "status", "status", "html" : "1109728", "length": "1166", "url": " http://www.example.com "}

有人可以指出我如何使用这些 json 元素来检索 HTML 的正确方向。

感谢您帮助菜鸟!

Seb*_*gel 6

从 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
Run Code Online (Sandbox Code Playgroud)

当然,在 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
Run Code Online (Sandbox Code Playgroud)

如果只是针对少数文档并且修改文档无关紧要,则可以直接使用索引服务器:http : //index.commoncrawl.org/CC-MAIN-2017-34/http : //www.example .com