金慶的專欄
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評論 :: 0 Trackbacks
公告
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(502)
1. C/C++(166)
(rss)
2. 網游開發(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊
公告照片
搜索
積分與排名
積分 - 653850
排名 - 25
最新評論
1.?re: boost::asio::spawn 將一統C++網絡庫
asio 成為C++首選網絡庫
--linda
2.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--金慶
3.?re: mingw編譯OrzNet
能發送一個mingw編譯好的OrzNet庫給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
5.?re: log4cxx中文輸出錯誤補丁
評論內容較長,點擊標題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯誤(11016)
2.?SVN中邪惡的replace(10937)
3.?VS2005編譯libevent(10404)
4.?混音算法的學習與研究(10183)
5.?C調用lua腳本的效率測試(9002)
評論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯誤(18)
4.?C++引用優于指針(17)
5.?ACE與ASIO之間關于Socket編程的比較(16)
批量html轉text
批量html轉text
(轉載請注明來源于金慶的專欄)
原來的代碼是參考“Recipe 12.11. Using MSHTML to Parse XML or HTML”,利用htmlfile提取文本。
將當前目錄下的所有html文件轉換為text文件。
def
extractHtmlFile(htmlFilePath):
'''
Extract html text and save to text file.
'''
htmlData
=
file(htmlFilePath,
'
r
'
).read()
import
win32com.client
html
=
win32com.client.Dispatch(
'
htmlfile
'
)
html.writeln(htmlData)
text
=
html.body.innerText.encode(
'
gbk
'
,
'
ignore
'
)
但是發現MSHTML解析文件可能會出錯,造成文本提取失敗。
jigloo經過對10W+個html文件的測試,得出結論,htmlfile的容錯比InternetExplorer.Application要差很多。
原文見:http://groups.google.com/group/python-cn/msg/c9221764bcafbc21
他的代碼大致如下,IE使用稍煩:
#
!/usr/bin/env python
import
sys, os, re, codecs
import
time
import
win32com.client
class
htmlfile:
def
__init__
(self):
self.
__ie
=
win32com.client.Dispatch(
'
InternetExplorer.Application
'
)
self.
__ie
.Silent
=
True
self.
__filename
=
''
self.
__document
=
None
def
__del__
(self):
self.
__ie
.Quit()
def
__getdocument
(self, filename):
filename
=
os.path.abspath(filename)
if
self.
__filename
!=
filename:
self.
__filename
=
filename
self.
__ie
.Navigate2(filename)
self.
__ie
.Document.close()
while
self.
__ie
.Document.Body
is
None:
time.sleep(
0.1
)
self.
__document
=
self.
__ie
.Document
return
self.
__document
def
gettext(self, filename):
return
self.
__getdocument
(filename).Body.innerText
def
gettitle(self, filename):
return
self.
__getdocument
(filename).title
if
__name__
==
'
__main__
'
:
hf
=
htmlfile()
for
root, dirs, names
in
os.walk(u
'
.
'
):
for
name
in
names:
if
name.endswith(
'
htm
'
)
or
name.endswith(
'
html
'
):
htmlpath
=
os.path.join(root, name)
textpath
=
htmlpath
+
'
.txt
'
file(textpath,
'
wb
'
).write(hf.gettext(htmlpath).encode(
'
mbcs
'
))
#
End of if.
#
End of for name.
#
End of for root.
del
hf
#
End of if.
對于我的簡單任務,這就足夠了。
有一個問題,如果有資源管理器打開著,運行這段代碼會關閉資源管理器,并出錯退出。比較奇怪,但應該不難解決,可能是IE控件的使用上還有問題。
self.__ie.Document.close()
File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 496, in
__getattr__
raise AttributeError, "%s.%s" % (self._username_, attr)
AttributeError: Document.close
posted on 2008-03-13 11:55
金慶
閱讀(1715)
評論(1)
編輯
收藏
引用
所屬分類:
6. Python
評論
#
re: 批量html轉text
2008-12-01 15:48
Hanqing Chen
你好,我需要這個程序代碼,可以發給我一份嗎?
不勝感謝,我的郵箱 lychenhanqing@163.com
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
vs2017 linux 編譯輸出改成 vs 格式
xlsx批量轉為utf8的csv
如何運行 rpcz python example
Windows上Python讀取stdin出錯
建立Socket Policy服務器
python計算24點
(Python編程)Pickle對象
Boost.Python中文文檔下載
用Boost.Python構建混合系統
Python封裝的性能研究
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
狠狠色丁香婷婷综合久久来来去
|
午夜肉伦伦影院久久精品免费看国产一区二区三区
|
久久综合久久伊人
|
一极黄色视频久久网站
|
AAA级久久久精品无码片
|
免费国产99久久久香蕉
|
国产精品乱码久久久久久软件
|
亚洲国产精品无码久久98
|
久久精品国产亚洲AV高清热
|
亚洲国产精品久久久久
|
亚洲午夜精品久久久久久浪潮
|
国产精品美女久久久久
|
国产欧美久久久精品影院
|
久久免费小视频
|
久久国产劲爆AV内射—百度
|
久久精品视频免费
|
久久亚洲精精品中文字幕
|
亚洲伊人久久综合影院
|
国产精品欧美久久久久天天影视
|
久久99精品久久久大学生
|
久久国产成人
|
久久免费线看线看
|
久久99国产乱子伦精品免费
|
国产99久久久国产精品小说
|
久久e热在这里只有国产中文精品99
|
久久香蕉超碰97国产精品
|
97久久综合精品久久久综合
|
99久久香蕉国产线看观香
|
久久久久国产一区二区三区
|
97久久久精品综合88久久
|
久久se精品一区精品二区国产
|
9999国产精品欧美久久久久久
|
亚洲精品乱码久久久久久蜜桃不卡
|
久久久SS麻豆欧美国产日韩
|
激情久久久久久久久久
|
国产人久久人人人人爽
|
久久精品无码专区免费青青
|
精品综合久久久久久97
|
欧美熟妇另类久久久久久不卡
|
91精品国产综合久久久久久
|
亚洲综合伊人久久大杳蕉
|