有人建议如何从古腾堡服务器下载所有电子书吗?
我需要他们进行语言研究。
#1 楼
根据有关机器人访问我们页面的信息:,当其他所有操作均失败时,对我们网站的机器人访问应作为最后的资源。另外,请记住Project Gutenberg网站拥有版权。
但是,仍然有希望:
更好的选择
获取该版本的脱机版本Project Gutenberg网站。
获取所有Project 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
#2 楼
虽然选择的答案是正确的,但可能会导致两个问题:您可能会收到403错误,在您以机器人为下载对象的前提下,拒绝访问分页
有可能将您发送到外部镜像,这意味着
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"
您可能想要更改引荐来源字符串和用户代理字符串,以提供一些随机性。
#3 楼
您可以在单个ZIM文件中下载整个Gutenberg的英语书籍和其他语言的完整集合,该文件经过高度压缩,然后可以在桌面和Android上使用Kiwix打开。英文书的大小为40 GB。ZIM工具
用于Linux的命令行ZIM工具可以从以下网址下载:
https:// download。 openzim.org/release/zim-tools/
评论
@aquagremlin嗯? kiwix.org/wiki/Software#GNU.2FLinux它甚至打包在一些发行版中。
– Nemo
16-2-14在17:28
这是txt格式的书吗?
–A.D
17年11月26日在17:59
@ A.D我不确定你的意思。它是HTML格式的文本+图片,以ZIM而不是EPUB或其他格式打包。如果需要,您可以从其中获取纯文本,但是我的答案主要是给喜欢格式化书籍等的人提供的。
– Nemo
17年11月28日在12:25
#4 楼
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。
评论
我建议使用torrent作为更合乎道德的选项(与第三个链接在同一页面上):gutenberg.org/wiki/…更具道德性,因为它减轻了Gutenberg项目服务器的压力。它也可能更快,更有效。另外,他们推荐它通过ftp。如果您使用Linux,则Transmission是一个不错的torrent客户端。但是,这只会为您提供2010年该网站上存在的书籍,但是,当shadowhorst的答案不起作用时,这似乎是最佳选择。
–Brōtsyorfuzthrāx
16 Dec 24 '11:39
#5 楼
另一种选择是位于http://pgiso.pglaf.org/的强大工具。输入ID范围(例如1-10000)
选择所需的文件类型
选择要包含的语言
等待通知
下载
评论
不为我工作,我只能看到原始的php
–欧内斯特
18/12/4在12:12
#6 楼
为什么不使用您所有的过于复杂和上面显示的编程技能和知识来制作一个简单的按钮,将所有这些动作链接起来,并在单击时显示“语言选项”选项卡,并显示“下载所有当前书籍”。我确定访问该网站的大多数用户都是电子书收藏者,并且手动下载某些与他们感兴趣的主题有关的书对于1或2本书是可以的。但是,手动进行更大的收藏是一件麻烦事。不过,如果他们需要它进行研究,或者只是想在自己的PC上拥有一个庞大的数字图书馆,就可以在图书馆中找到自己的书。当大多数人意识到必须使用计算机向导来关闭计算机时,他们被关闭了,并离开了站点。因此,“下载所有当前书籍”按钮将使该站点及其项目的用户受益,并且它肯定会产生网站的访问者甚至更多。这样,每个人都很高兴。
评论
有没有办法告诉wget限制它在爬网时下载的文件数量(例如,遇到的前100个文本文件)?
–rohanbk
2011-02-11 20:38
另外,当文本文件中有许多链接时(绝对uri,例如“ gutenberg.org/files/1.zip,gutenberg.org/files/2.zip”,则使用什么参数来提供这样的文本文件大量的WGET下载链接?
– EugeneP
2011-2-12在9:22
@rohanbk,您可以通过浏览URL本身查看下载的内容,例如gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=en这表明它实际上是分页的,但是每页的文件数不是恒定的。 (也许基于大小?)因此,为了不递归,根据wget手册,您可以尝试--level = 0。但是我想您最好允许中止然后重新启动:尝试--level 9999 --no-clobber,它将跳过您已经拥有的文件(假设您仍然位于磁盘上的同一文件夹中)。
– Arjan
2011年2月12日下午13:20
@EugeneP,请参阅手册中的--input-file。
– Arjan
2011-2-12在13:24
@Arjan是否可以在下载开始时指定偏移量?由于某些原因,我的下载中断了,现在wget已经开始从第一页开始检查文件。我曾经使用-c选项,但是仍然。我在要镜像的URL中提供了offset = xxx,但仍从第一页下载。
–user13107
2013年9月22日在7:07