html2txt
我們已經(jīng)利用larbin從網(wǎng)上抓取了六千多個HTML文件,在使用clucene建立索引之前,我們還需要把HTML文件中的各種無用的標簽去掉,形成只包含有實際內(nèi)容的文檔.html2text就是這樣一個工具.
其實Linux下兩種html2text工具:
Python Module for converting HTML to text
我們先說用Python寫的那個,如果你會寫點Python,我想你一定會選擇這個.如果不使用Ubuntu軟件中心,你需要這樣來手動安裝:
1)下載htmltotext-0.7.3.tar.gz
2)解壓,進入解壓后的文件
3)安裝Python
$ sudo apt-get install python-dev
4)安裝Python的 setuptools模塊
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
5)安裝html2txt
#?python setup.py install
6)測試安裝是否成功
#?python eggsetup.py test
Linux html2text
事實上我完全不懂Python,所以我用的是第一個.
用法:
? html2text -help
? html2text -version
? html2text [ -unparse | -check ] [ -debug-scanner ] [ -debug-parser ] \
? ? ?[ -rcfile <file> ] [ -style ( compact | pretty ) ] [ -width <w> ] \
??? [ -o <file> ] [ -nobs ] [ -ascii ] [ <input-url> ] ...
Formats HTML document(s) read from <input-url> or STDIN and generates ASCII
text.
? -help? ? ? ? ? Print this text and exit
? ?顯示本頁文本并退出
? -version? ? ? ?Print program version and copyright notice
? -unparse? ? ? ?Generate HTML instead of ASCII output
? -check? ? ? ? ?Do syntax checking only 做語法檢查
? -debug-scanner Report parsed tokens on STDERR (debugging)
? -debug-parser? Report parser activity on STDERR (debugging)
? -rcfile <file> Read <file> instead of "$HOME/.html2textrc"
? -style compact Create a "compact" output format (default)
? -style pretty? Insert some vertical space for nicer output
? -width <w>? ? ?Optimize for screen widths other than 79
? -o <file>? ? ? Redirect output into <file>
將輸入重新輸出至 <file>
? -nobs? ? ? ? ? Do not use backspaces for boldface and underlining
? ?? ?? ? 這個選項要用著。不然的話轉(zhuǎn)換后的文件 里會有很多沒用的符號??
? -ascii? ? ? ? ?Use plain ASCII for output instead of ISO-8859-1
html轉(zhuǎn)換成txt后編碼沒變。
指轉(zhuǎn)換就要使用腳本了.
如果你會shell:
#!/bin/bash ls *.html |while read i do html2text -o $i.txt -nobs $i done當然我還是慣用Perl:
#!/usr/bin/perl -w use strict; use File::Find; my $path=shift @ARGV; #把$path下面的所有.html文件去掉HTML標簽,并加上.txt后綴 sub html2txt{if(-e $File::Find::name){if(-f $File::Find::name){system "html2text","-o","$File::Find::name.txt", $File::Find::name;}elsif(-d $File::Find::name){next if $File::Find::name=~/^\./;}}else{print "$File::Find::name does not exist.\n";} } find(\&html2txt,$path); 麻煩并沒有至此結(jié)束.生成的.txt文件用gedit打開是亂碼,當然如果你打開時指定utf-8編碼是可轉(zhuǎn)以的,但六千多個文件我不能都這么干吧.方法1.
使用vim打開,但是需要更改.vimrc
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。
方法2.
iconv -f GBK -t UTF-8 file1 -o file2
就是把原文件從GBK編碼轉(zhuǎn)換這UTF-8編碼.
那要是我不知道原文件是什么編碼,也不知道應該把它轉(zhuǎn)換為什么編碼呢?
查看文件編碼:
1)直接在vim中
:set fileencoding
2)使用enca工具,當然要先安裝該工具
enca -L zh_CN file 檢查文件的編碼
enca -L zh_CN -x UTF-8 file 將文件編碼轉(zhuǎn)換為”UTF-8″編碼
enca -L zh_CN -x UTF-8 < file1 > file2 如果不想覆蓋原文件可以這樣
除了有檢查文件編碼的功能以外,”enca”還有一個好處就是如果文件本來就是你要轉(zhuǎn)換的那種編碼,它不會報錯,還是會print出結(jié)果來, 而”iconv”則會報錯。這對于腳本編寫是比較方便的事情。
要轉(zhuǎn)換為什么編碼:
這要看你下一步用什么中文分詞工具了,ICTCLAS 3.0 2009 共享版只支持GBK編碼,因此,如果是UTF-8編碼的字符串,可以先用iconv函數(shù)轉(zhuǎn)換成GBK編碼,再用httpcws進行分詞處理,最后轉(zhuǎn)換回UTF-8編碼。SCWS 支持 GBK,UTF-8,BIG5 等漢字編碼,切詞效率高。
另外linux下還一個工具是專門對文件名進行編碼轉(zhuǎn)換的,這主要是解決文件在Windows和Linux之間移動的時候文件亂碼的問題.
令人沮喪的是
orisun@zcypc:~$ enca f00004.html.txt
Universal transformation format 8 bits;
UTF-8??Surrounded by/intermixed with non-text data
它說我的文件不光是utf8,還有一些" non-text data",gedit用utf8打開時還是亂碼.
解決辦法,這是我睡了一覺想出來的:既然用vim可以成功打開,那是否可以直接cat到終端呢?然后再用管道把stdout送給一個文件.
首先cat f00004.html.txt,在終端可以正確顯示中文.
如果你的終端還是不能正常 顯示中文,sudo apt-get install zhcon
cat f00004.html.txt 1>file
打開file發(fā)現(xiàn)還是亂碼.
有一個html2text的網(wǎng)站,可以在線試用一下:http://www.aaronsw.com/2002/html2text/
Lynx
用html2text工具后還進行一步編碼的轉(zhuǎn)換,麻煩,所有想到了用Lynx.這是一個在字符界面查看網(wǎng)頁的瀏覽器,當然看不到圖片.由于在Lynx上顯示的已經(jīng)是網(wǎng)頁的文本,去除了html標簽和各種腳本代碼,我們再把Lynx界面上的內(nèi)容輸出到文件里就可以了.
先要設(shè)置一下使你的Lynx支持中文,要先讓配置文件lynx.cfg(locate一下)可更改,sudo chmod u+w lynx.cfg.然后運行l(wèi)ynx, O選項,設(shè)置語言.或者直接更改 lynx.cfg.
CHARACTER_SET:Chinese? ASSUME_CHARSET:Chinese PREFERRED_LANGUAGE:zh_CN lynx -raw -dump <url> > plain.txt?
或者?
cat <file> | lynx -raw -dump?-stdin >plain.txt
總結(jié)
- 上一篇: C#的Timer解析(转)
- 下一篇: 最新17个紫色风格网页设计作品欣赏