|
本帖最后由 Oeasy 于 2013-11-17 09:54 编辑
一个简单得不能再简单的网页抓取然后制作mdx教程(20131114)
使用软件
0. 操作系统:Windows 7 旗舰版64位
1. 抓取工具:wget,http://users.ugent.be/~bpuype/wget/,http://baike.baidu.com/view/1312507.htm
2. 文本处理:EditPlus, UltraEdit, TextForever(http://www.comicer.com/stronghorse/software/index.htm#TextForever)
目标词典
Dictionary of Phrase and Fable,1894: http://www.infoplease.com/dictionary/brewers/ 这词典是公版的,而且网站没有设置抓取限制(至少目前看来没有设置),获取index也非常容易,故以此为例。
另:有个pdf http://pan.baidu.com/share/link?shareid=267207&uk=2063908536,版本不详,似乎是第17版的。
操作步骤
1. 获取index
观察http://www.infoplease.com/dictionary/brewers/,该网站本身可以browse整本词典,获取index非常容易。
新建一个txt,内容为
这些地址都是观察上面网站而得,txt命名为download.txt。
我把这个download.txt和wget.exe(如果你下载的wget是wget+版本号.exe,不妨重命名为wget.exe),这俩文件都放在D:\DOPF下。
cmd.exe->CD/D D:\DOPF->wget -i download.txt
很快,26个html文件就下下来了,对这26个html文件进行整理,得到
这样的一共16698个链接。
2. 抓取内容
同样的,wget -i download.txt
把上面那N个html都抓下来,然后就很简单了。
-2013年11月14日 16:35:47
成功抓取了16695个html,漏了3个,懒得研究到底是哪3个了。
3. 文本提取
观察可知,词典条目内容在第一个<h1>和<div class="source">之间
<h1>Charybdis</h1>
<p> [ch=k]. A whirlpool on the coast of Sicily. Scylla and
Charybdis are employed to signify two equal dangers. Thus Horace says
an author trying to avoid Scylla, drifts into Charybdis,<em> i.e.</em>
seeking to avoid one fault, falls into another. The tale is that
Charybdis stole the oxen of Hercules, was killed by lightning, and
changed into the gulf.</p>
<p>“Thus when I shun Scylla, your father, I fall into Charybdis, your
mother.” —<cite>Shakespeare: Merchant of Venice,</cite> iii. 5.
</p>
<div class="source">Source: <cite>Dictionary of Phrase and Fable</cite>, E. Cobham Brewer, 1894</div>
利用TextForever来提取文本
-
提取完毕,合并得到的16695个html,
这本词典的制作过程中,我思考了下,不用在“文件内容前加注文件名”,有的情况下,是需要这样做的,以方便提取keywords,经过测试,还是要在“文件内容后加空行”。
得到dopf-src.txt,对这个txt进行操作,得到可build为mdx的txt。
4. 制作mdx
合并后的文本长这样:
明显http://www.infoplease.com/dictionary/brewers/的词典是xml,由于MDict PC版不支持xml+css,我们要把xml标签替换为html标签。经过下面一系列的操作。
处理后最终的文本是这样:
再简单写点css
中途遇到些小问题,一个个解决,最后,成品:
是不是比在线的稍微顺眼点呢?
http://www.infoplease.com/dictionary/brewers/comb.html
PS:虽然做完了,但是我发现了一些问题,从上面的截图中就可以看出来,有些词之间少了空格。暂无意修改,等有空改完了再分享。谁有兴趣改一改练练手的话,可以PM我,我把下载的网页发给你。
|
|