如何从古腾堡下载所有英语书籍?


23

我需要以纯文本格式(不是html)并且仅以英语下载所有古腾堡电子书。

任何人都有建议如何从古腾堡服务器下载所有建议?

我需要他们进行语言研究。

Answers:


32

根据有关机器人访问我们页面的信息

当其他所有操作均失败时,机器人对我们网站的访问权限应作为最后的资源。另外,请记住,古腾堡计划网站拥有版权。

但是,还是有希望的

更好的选择

  • 获取Project Gutenberg网站的脱机版本。
  • 获取所有的Gutenberg项目电子书文件。
  • 获取Project Gutenberg目录数据。

和:

[...]您可以将机器人指向http://www.gutenberg.org/robot/harvest,以压缩文件的形式获取我们所有的电子书

[...]解压缩zip文件将另外产生70,000个文件。

这是如何使用来获取所有文件的示例wget

wget -w 2 -m http://www.gutenberg.org/robot/harvest

[...]如果只需要某些类型的文件,请说:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt

[...]如果只想使用给定语言的文件,请说:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?langs[]=de

所以,我想问:

wget -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en

有没有办法告诉wget限制它在爬网时下载的文件数量(例如,遇到的前100个文本文件)?
rohanbk 2011年

此外,当我们有一些在文本文件中的链接(绝对URI,说“ gutenberg.org/files/1.zipgutenberg.org/files/2.zip ”,使用什么参数来提供这样一个文本文件大量下载链接到WGET?
EugeneP

@rohanbk,您可以通过浏览URL本身来查看要下载的内容,例如gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en这表明它实际上是分页的,但是每页的文件数不是恒定的。(也许基于大小?)因此,根据wget手册,不进行递归,您可以尝试--level=0。但是我想您最好允许中止然后重新启动:try --level 9999 --no-clobber,它将跳过您已经拥有的文件(假设您仍然位于磁盘上的同一文件夹中)。
Arjan

1
@EugeneP,请参阅--input-file 手册
Arjan

@Arjan是否可以在下载开始时指定偏移量?由于某些原因,我的下载中断了,现在wget已开始从第一页开始检查文件。我曾经使用过-c期权,但仍然如此。我提供offset=xxx了要镜像的URL,但仍从第一页下载。
user13107 2013年

7

您可以在单个ZIM文件中下载整个Gutenberg的英语书籍其他语言完整集合,该文件经过高度压缩,然后可以使用Kiwix在台式机和Android上打开。英文书籍为40 GB。


Kiwix没有Linux客户端
aquagremlin

@aquagremlin嗯?kiwix.org/wiki/Software#GNU.2FLinux它甚至打包在一些发行版中。
Nemo

2
抱歉。没有睡眠,没有看到大按钮下方的“其他系统”。
aquagremlin

这是txt格式的书吗?
公元

@AD我不确定您的意思。它是HTML格式的文本+图片,以ZIM而不是EPUB或其他格式打包。如果需要,您可以从其中获取纯文本,但是我的答案主要是给那些喜欢格式化书籍等的人
。– Nemo

6

所选答案正确时,可能会导致两个问题:

  1. 您可能会收到403错误,拒绝您以bot身份下载的假设下的访问分页
  2. 您有可能会被发送到外部镜像,这意味着该wget命令将无法通过递归检查从外部镜像下载文件。

以下解决方案解决了这些问题:

wget -H -w 2 -m http://www.gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en \
--referer="http://www.google.com" \
--user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6" \
--header="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" \
--header="Accept-Language: en-us,en;q=0.5" \
--header="Accept-Encoding: gzip,deflate" \
--header="Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" \
--header="Keep-Alive: 300"

您可能需要更改引荐来源字符串和用户代理字符串,以提供一些随机性。


5

ftp://mirrors.pglaf.org/mirrors/gutenberg-iso有很多不错的选择。

ftp://mirrors.pglaf.org/mirrors/gutenberg-iso/pgdvd042010.iso是一个8GB的文件,应该足以满足您的需求。

这里有更多信息:

https://www.gutenberg.org/wiki/Gutenberg:The_CD_and_DVD_Project#Downloading_Via_FTP,它提供了下载档案的所有选项,包括FTP和BitTorrent。


1
我建议使用torrent作为更合乎道德的选项(与第三个链接在同一页面上):gutenberg.org/wiki/…这更具合乎道德,因为它减轻了 Gutenberg项目服务器的压力。它也可能更快,更有效。另外,他们推荐它通过ftp。如果您使用Linux,则Transmission是一个不错的torrent客户端。不过,这只会为您提供2010年该网站上存在的书籍,但是当shadowhorst的答案不起作用时,这似乎是最佳选择。
Shule


-4

为什么不使用您所有的过于复杂和上面显示的编程技能和知识来制作一个简单的按钮,将所有这些动作链接在一起,并在单击时显示“语言选项”选项卡,并显示“下载所有当前书籍”。

我确信访问该网站的大多数用户都是电子书收藏家,并且手动下载某些与他们感兴趣的主题有关的书对于1或2本书是可以的。但是,手动进行更大的收藏是一件麻烦事。但是,如果他们需要它进行研究,或者只是想在自己的PC上拥有一个庞大的数字图书馆,就可以在图书馆工作。当大多数人意识到必须使用计算机向导来关闭计算机时,他们被关闭了,并离开了站点。因此,“下载所有当前书籍”按钮将使该站点及其项目的用户受益,并且它肯定会产生网站的访问者甚至更多。这样,每个人都很高兴。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.