我想使用常规抓取检索网页,但我迷路了。
我想获取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。
感谢您帮助一个菜鸟!
答案 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 --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