LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1441|回复: 4

“新浪讀書”轉TXT

[复制链接]
发表于 2007-8-31 02:19:36 | 显示全部楼层 |阅读模式
wget -i list下載,用下面的腳本處理,即可得到純文本的圖書。
由于sed是單行處理,我沒找到特別好的刪除空行的辦法,用vim輔助一下就可以了。

[PHP]
#!/bin/sh

# 處理“新浪讀書”下載的HTML,并轉為TXT。

# 文件名可能为UTF8,文本为GB

html2txt()
{
        cat $1 | \
        LC_ALL=zh_CN.GBK \
                sed -n \
                        -e '/<div id=article>/,/正文底部文字广告/p' \
                        -e '/<!--正文内容开始-->/,/<!--正文内容结束-->/p' -e '/正文页画中画/p' |
        LC_ALL=zh_CN.GBK        sed \
                        -e '/^[ \t; ]*$/d' \
                        -e '/        连载:/d' \
                        -e 's/  /\r\n  /g' -e 's/<[^>]*>//g' -e 's/&nbsp//g' \
                        -e '/<!--/,/-->/d' \
            -e 's/\[上一篇\]\|\[返回\]\|\[返回目录\]\|\[下一篇\]\|上一页\|下一页\|\[\]\|\[[0-9]\]//g' \
                        -e 's/^\t+$//g'

}

for i in `find . -name "?.shtml" | sort`; do
        #echo $i
        html2txt $i
done

for i in `find . -name "??.shtml" | sort`; do
        #echo $i
        html2txt $i
done

for i in `find . -name "???.shtml" | sort`; do
        #echo $i
        html2txt $i
done

[/PHP]
发表于 2007-8-31 02:21:32 | 显示全部楼层
只能说。。学习一下了。呵呵
回复 支持 反对

使用道具 举报

发表于 2007-8-31 08:45:10 | 显示全部楼层
好办法~~ <字数补丁>
回复 支持 反对

使用道具 举报

发表于 2007-8-31 12:08:24 | 显示全部楼层
提供一个简陋的删除空行的方法,也许能用
  1. grep -v '^[ \t\r\n]*$'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-1 02:26:50 | 显示全部楼层
這樣就可以了,DOS格式的空行也能正確刪除。

[PHP]
#!/bin/sh

# 處理“新浪讀書”下載的HTML,并轉為TXT。

# 文件名可能为UTF8,文本为GB

html2txt()
{
        cat $1 | \
        LC_ALL=zh_CN.GBK \
                sed -n \
                        -e '/<div id=article>/,/正文底部文字广告/p' \
                        -e '/<!--正文内容开始-->/,/<!--正文内容结束-->/p' -e '/正文页画中画/p' |
        LC_ALL=zh_CN.GBK        sed \
                        -e '/^[ \t; ]*$/d' \
                        -e '/        连载:/d' \
                        -e 's/  /\r\n  /g' -e 's/<[^>]*>//g' -e 's/&nbsp//g' \
                        -e '/<!--/,/-->/d' \
            -e 's/\[上一篇\]\|\[返回\]\|\[返回目录\]\|\[下一篇\]\|上一页\|下一页\|\[\]\|\[[0-9]\]//g' \
                        -e '/^[ \t\n;]*\r$/D' |
        LC_ALL=zh_CN.GBK grep -v 'http://book.sina.com.cn'

}

for i in `find . -name "?.shtml" | sort`; do
        #echo $i
        html2txt $i
done

for i in `find . -name "??.shtml" | sort`; do
        #echo $i
        html2txt $i
done

for i in `find . -name "???.shtml" | sort`; do
        #echo $i
        html2txt $i
done

[/PHP]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表