下载整理中国哲学电子书的脚本

类别:    标签: bash   阅读次数:   版权: (CC) BY-NC-SA

我喜欢将一些书的文本存在手机上, 这样可以利用碎片化的时间随时阅读几句. 中国的古文最适合这样的目的, 因为大多很短, 且言简意赅. 中国哲学书电子化计划网站上有很多整理好的古文文本, 但保存不方便, 所以就想能不能自动下载整理呢? 根据网站的地址和格式分析了一下, 似乎可行. 脚本如下:

ctxt.bsh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# url="http://ctext.org/analects/zhs"; trs=1
# url="http://ctext.org/mengzi/zhs";   trs=0
# url="http://ctext.org/xunzi/zhs";  trs=0
# url="http://ctext.org/kongzi-jiayu/zhs"
# url="http://ctext.org/shi-shuo-xin-yu/zhs"
# url="http://ctext.org/yan-shi-jia-xun/zhs"
# url="http://ctext.org/zhuangzi/inner-chapters/zhs"
# url="http://ctext.org/book-of-changes/zhs"
url="http://ctext.org/shang-shu/zhs"; trs=0

export LANG=$(locale -uU) # 设定中文支持

curl $url > _chp

awk ' BEGIN{system("rm -rf _ctx")}
/  <a class="menuitem"/ {
	sub(/.*href=\"/, "")
	sub(/\".*/, "")
	url="http://ctext.org/"$0
	print url
	system("curl "url" >>_ctx")
}
' _chp

awk -v trs=$trs ' BEGIN {chp=0; tot=0}
/<div id="content3"/ {
	gsub(/^[^《]+《/,"《")
	gsub(/》.+/,"》")
	chp++; sec=0
	print "第 "chp" 章 "$0"\n"
}
/<div id="comm[0-9]+"/ {
	gsub(/<[^>]+>/,"")
	sec++;
	if(trs) {
		if(sec%2) print chp"."(sec+1)/2, $0
		else {tot++; print tot" "$0"\n"}
	} else {
		tot++;
		print chp"."sec"/"tot, $0"\n"
	}
}
' _ctx > _ctx.txt

可惜的是, 这个网站明言请注意:严禁使用自动下载软体下载本网站的大量网页,违者自动封锁,不另行通知。根据我的测试, 还确实是这样, 下载量大了之后自动封IP. 要想解决的话, 只能自动换IP或者慢慢下载了.

随意赞赏

微信

支付宝
◆本文地址: , 转载请注明◆
◆评论问题: https://jerkwin.herokuapp.com/category/3/博客, 欢迎留言◆


前一篇: 使用GROMACS进行团簇分析
后一篇: 曲线的变形

访问人次(2017年1月27日起): | 最后更新: 2021-04-22 10:35:31 CST | 版权所有 © 2008 - 2021 Jerkwin