如何通过wget批量下载古登堡计划指定书架的所有.txt文件?
用wget批量下载古腾堡指定书架的所有TXT文件
可以通过**wget结合命令行工具(grep、awk)**实现,因为Gutenberg书架页面没有直接的批量下载参数,需要分三步操作:
1. 抓取书架内所有电子书的详情页链接
先获取目标书架页面的HTML内容,提取其中所有电子书的详情页URL:
wget -qO- https://www.gutenberg.org/ebooks/bookshelf/22 | grep -E '/ebooks/[0-9]+' | awk -F '"' '{print "https://www.gutenberg.org"$2}' | sort -u > ebook_links.txt
-qO-:静默下载页面内容并输出到标准输出grep -E '/ebooks/[0-9]+':匹配所有电子书详情页的相对链接awk:提取完整的URL并拼接域名sort -u:去重后保存到ebook_links.txt文件
2. 从每个电子书页面提取TXT下载链接
遍历刚才保存的电子书链接,逐个页面提取TXT格式的下载地址:
while read link; do wget -qO- "$link" | grep -E 'https://.*\.txt' | grep -v 'utf-8' | head -1; done < ebook_links.txt > txt_download_links.txt
while read link:循环读取每个电子书详情页链接grep -E 'https://.*\.txt':匹配页面内所有TXT下载链接grep -v 'utf-8':过滤掉UTF-8编码的版本(如果需要保留,可删除此段)head -1:取第一个有效TXT链接(部分电子书会有多个格式选项)- 最终将所有TXT下载链接保存到
txt_download_links.txt
3. 批量下载所有TXT文件
用wget批量读取下载链接文件,完成下载:
wget --wait=2 -i txt_download_links.txt
--wait=2:每次下载间隔2秒,避免触发Gutenberg的下载限制(建议保留,防止被临时封禁)-i:指定读取下载链接的文件
额外说明
- 部分电子书可能没有TXT格式,这类链接会自动被wget跳过
- 如果需要下载UTF-8编码的TXT文件,删除第二步命令中的
| grep -v 'utf-8'即可
内容的提问来源于stack exchange,提问作者really_anxious
相关产品推荐
相关产品推荐

