0

使用普通爬网,有没有一种方法可以从特定域(例如,wisc.edu)的所有页面下载原始文本?我只对用于 NLP 目的的文本感兴趣,例如主题建模。

4

2 回答 2

1

不,我认为没有任何简单的方法可以在不解析所有数据的情况下按源对数据集进行分区。

每个 WARC 文件中的 URL 似乎是按字母顺序排序的,但如果您要搜索接近字母表末尾的内容,例如www.wisc.edu,则必须检查几乎所有的 URL,然后才能找到要定位的 URL。

tripleee$ zgrep ^WARC-Target-URI: CC-MAIN-20201020021700-20201020051700-00116.warc.gz | head
WARC-Target-URI: http://024licai.com/index.php/art/detail/id/6007.html
WARC-Target-URI: http://024licai.com/index.php/art/detail/id/6007.html
WARC-Target-URI: http://024licai.com/index.php/art/detail/id/6007.html
WARC-Target-URI: http://04732033888.com/mrjh/1508.html
WARC-Target-URI: http://04732033888.com/mrjh/1508.html
WARC-Target-URI: http://04732033888.com/mrjh/1508.html
WARC-Target-URI: http://04nn.com/a/cp/lvhuagai/123.html
WARC-Target-URI: http://04nn.com/a/cp/lvhuagai/123.html
WARC-Target-URI: http://04nn.com/a/cp/lvhuagai/123.html
WARC-Target-URI: http://0551ftl.com/0551ftl_196119_138772_338002/

(此示例来自 2020 年 10 月转储的首批文件之一。)

Common Crawl 的重点是将来自许多不同地方的结果汇总在一起。一个资源密集度低得多的路径可能是检查archive.org域中的文件。

那只是一台特定的服务器;似乎有大量的子域,例如mcburney.wisc.edu,sohe.wisc.edu等。

当然,如果幸运的话,有人已经对 Common Crawl 材料进行了划分或索引,并且可以为您提供在哪里可以找到您的特定域的地图,但我不知道有任何此类索引。我的期望是那些做那种事情的人通常不会想要或期望其他人想要从那个特定的角度检查材料。

于 2020-11-30T20:18:56.130 回答
1

Common Crawl 提供了两个允许选择任意 WARC 记录的索引:

  1. CDX 索引 ( https://index.commoncrawl.org/ ) 按 URL(前缀)或域名搜索记录
  2. 柱状索引(此外)允许通过某些元数据(例如内容类型或语言)有效地选择记录

要下载单个域的所有 WARC 记录,您可以使用

  • cdx 工具包,例如
    cdxt -v --cc --from=20201001000000 --to=20201101000000 --limit 10 warc 'wisc.edu/*'
    
    从威斯康星大学下载由 Common Crawl 于 2020 年 10 月存档的 10 条 WARC 记录,并将它们写入本地 WARC 文件。
  • 要扩展和处理数百万条 WARC 记录,您可以考虑将列索引与 Spark 结合使用,请参阅项目cc-index-tablecc-pyspark示例。
于 2020-12-01T07:54:08.957 回答