超级替换 庞杂网页变身简洁电子书

流言2014-10-08 09:20应用 标签:电子书 网页

在手机上看小说,最方便的格式是TXT文本,不过网上许多TXT下载站,总是用各种广告迷惑用户,下载一部小说真是千辛万苦,还有不少小说根本就找不到TXT版本的。这种情况下,我们不妨自己动手采集整理了。

批量下载小说网页文本

小说的TXT版本不好找,但是在线浏览的话却很容易找到。以四大名著之一的《红楼梦》为例,搜索关键字“红楼梦 在线阅读”,很快即可找到该小说的在线阅读页面。在线阅读小说比较麻烦的是,每一章都需要返回目录页再点击相应回目链接进入,所以我们先得想办法将这些内容页面批量下载下来。

如果安装了第三方下载软件,一般都会提供批量下载的功能,操作步骤相似。这里以迅雷为例(下载地址:http://www.xunlei.com),在小说目录页点击鼠标右键,选择“使用迅雷下载全部链接”,如图1所示,文件类型过滤选择“自定义”,仅选中“htm”项(根据实际情况确定是否选择“html”),即可将小说正文内容的链接筛选出来。点击“确定”,弹出如图2所示的提示对话框,勾选“使用相同配置”,选择文件保存目录后,点击“立即下载”即可批量下载小说啦。

1201crgedr01

01

1201crgedr02

02

批量改名并合并文件

我们需要的是TXT文本文件,下载的这些网页文件有什么用?其实网页文件实质就是文本,直接将文件扩展名由htm改成txt就可以了。不过一个文件一个文件的修改太麻烦,只需一个DOS命令,即可网页批量变文本。

按Win+R键快速调出运行对话框,输入执行命令“cmd”(不含外侧引号)打开命令提示符窗口,进入保存小说网页的文件夹内,输入以下命令:

ren *.htm *.txt

按回车键执行后,该文件夹下的所有htm文件就全都成了txt文件了(见图3)。

1201crgedr03

03

小提示

★如果感觉在命令提示符窗口中不方便查找目录,可以在Windows资源管理器窗口中打开相应的文件夹,然后按下Shift键不放并点击右键,选择“在此处打开命令窗口”,即可直接启动命令提示符窗口并直接进入当前目录,非常方便。

在手机中一个一个文件打开浏览也很不方便。我们不妨将刚才转换的100多个TXT文件合并为一个大的TXT。继续在刚才的命令提示符窗口中操作,输入以下命令:

copy *.txt hlm.txt

按回车键执行后,一部长篇小说的TXT版就完成啦。

高手支招

★使用copy命令批量合并文本文件,虽然快速,但有时会出现合并的文件顺序颠倒的问题,导致制作的TXT小说内容混乱。安全起见,我们还可以如下进行操作:

首先在命令提示符窗口进入小说目录中,然后执行以下命令:

dir /B *.txt >>list.bat

完成后即可将该目录下的所有TXT文件名以列表的形式保存在list.bat文件中。注意,一定要加上参数“/B”,否则生成的列表文件中会有很多无用的信息。

在EmEditor之类的文本编辑器中打开刚刚生成的list.bat(此时千万不要双击运行此文件否则会打开一堆文件),稍作清理,并检查一下文件次序是否正确,不正确的可作调整。

完成后按Ctrl+H键打开替换对话框,勾选Use Regular Expressions(使用正则表达式)项,然后点击Find(查找)右侧的“>”按钮,选择“\n”,在Replace with(替换为)文本框中输入+号,如图4所示,单击Replace All(全部替换)后,所有的文件名都被排列于一行之中并且以+号相连。在行首添加“copy ”(不含外侧引号,命令后加空格),在行尾输入合并后的文件名,如“ hlm.txt”,同样不含引号,用空格与前面的内容隔开。

1201crgedr04

04

保存list.bat文件后退出,再双击此批处理文件,即可快速将当前目录中的所有txt合并为一个了。

超级替换清理网页文档中的垃圾

现在打开合并成功的《红楼梦》TXT版,会发现其中有很多网页代码(见图5),在电脑上看还不是很影响,如果是在手机这样的小屏幕上,得翻出很多页才能见到正文。更麻烦的是每一回就是一个网页,文本前后都有网页代码,合并后的TXT,这样的代码有好几百处,纯手机删除的话,太麻烦了。

1201crgedr05

05

1、多行重复内容巧清除

有聪明的同学会说,网页代码有很多相似之处,直接用替换功能,把这些重复的网码代码替换成无不就行了?聪明!但问题又来了,文本编辑器(包括Word),最多只能替换一行,但网页代码往往有很多行,怎么办?别急,现在该“正则表达式”上场啦。

小知识:正则表达式

★正则表达式不容易理解,但是说起通配符大多数人却很容易明白,因为平时经常要使用。比如在Windows/Dos下查找文件时,搜索“hlm.txt”,只能找到“hlm.txt”这一个文件,但如果搜索“*.txt”,则能搜出所有的扩展名为txt的文件文件,这里的“*”号即是通配符,它可以替代任意数量的任意字符。而正则表达式,我们可以将它理解为超级“通配符”,通过一系列的规则,它可以表示任意复杂关系的字符内容。

★正则表达式的主要应用

数据验证:这是正则表达式在开发中最常见的应用,验证输入的字符串是否为邮政编码、电话号码、电子邮件地址、信用卡号码等。

搜索和替换文本:用正则表达式来搜索文档中的特定文本块, 根据需要用其他指定的文本块进行替换。这也是文本编辑中的一个常见应用。

如上图5所示,前7行的内容,在后面基本上是完全重复(本例中共120处)。分析这段重复代码的特点,可以发现,它的开头部分是“”结尾部分是“高鹗 续。">”。结尾部分包含有中文字符,正则表达式一般不支持,所以可将接在那后面的作为结尾部分。继续以EmEditor为例,按Ctrl+H键调出替换对话框,勾选Use Regular Expressions(使用正则表达式)项,然后在Find(查找)框中输入正则表达式代码:

([\s\S]+?)

Replace with(替换为)框中则为:

 

如此替换是为了清除重复内容但又保留以备后用。最后点击Replace All(替换全部),确定后,如图5所示那几行内容的所有重复部分就被清除啦。在这个正则表达式中,“\s”表示任一空白字符,包括空格、制表符、换页符、回车符和垂直制表符;“\S”表示任一非空白字符。用中括号将它们组合起来,[\s\S]即表示所有的字符了。后面的“+?”则表示任意数量的字符。

2、有保留替换内容

除了像上面那样的完全重复内容的替换法清理外,我们还会遇到以下问题。比如文档中还包括以下代码:

《红楼梦》 第一回 甄士隐梦幻识通灵 贾雨村风尘怀闺秀

我们需要去掉开头和结尾处的标识,但是又要保留中间的文字内容,这时我们可以这么做。在查找框中输入以下正则表达式:

(.*?)

而在替换框中则输入:

\1

如图6所示,执行替换后,即可保留中间的内容,而将前后的清理掉了。(.*?)与前面的([\s\S]+?)功能相似,都是表示任意字符,不过([\s\S]+?)将换行符也包含在内了。

1201crgedr06

06

3、为断行文本续行

通过网页转化合并的TXT文档,还有一个问题,依旧如图5所示,正文内容中间出现了许多换行符,这在电脑上看起来文档显得很整齐,但如果是在小屏幕的手机上,则时时遇到断行,影响我们的阅读。但如果我们直接将换行符替换为无,正文内容是能接上了,但是正常的段落之间的换行又会被破坏,一个超长的没有段落显示的文本也是非常恐怖的。

仔细分析,段落换行,换行后还会连续两个空格,而正文中间非正常换行只有一个换行符。有区别就好办了。首先在查找中输入正则表达式“\n  ”(不含外侧引后,注意后面有两个空格),将其替换成独特的特殊的字符串,比如“aaaaaaaaaa”(什么都行,保持唯一性即可)。

接一来再输入正则表达式“\n”(这次不用加空格了),替换成无,将所有的正文内容连接到一起。

最后,再将前面的“aaaaaaaaaa”,重新替换成“\n  ”,就可以恢复段落回行了。

经过以上方法的快速处理,一篇干净整洁的TXT版电子小说就搞定啦,最后祝大家阅读愉快。