金慶的專欄
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)
相冊
公告照片
搜索
積分與排名
積分 - 659036
排名 - 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" 錯誤(11054)
2.?SVN中邪惡的replace(10972)
3.?VS2005編譯libevent(10429)
4.?混音算法的學習與研究(10230)
5.?C調用lua腳本的效率測試(9019)
評論排行榜
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
金慶
閱讀(1730)
評論(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 © 金慶
三级三级久久三级久久
|
久久久久香蕉视频
|
中文字幕无码久久人妻
|
少妇熟女久久综合网色欲
|
亚洲色婷婷综合久久
|
久久精品国产半推半就
|
亚洲国产精品久久66
|
超级碰碰碰碰97久久久久
|
久久99精品久久久大学生
|
久久精品国产福利国产秒
|
手机看片久久高清国产日韩
|
久久亚洲AV成人无码国产
|
日本道色综合久久影院
|
久久人人爽人人人人爽AV
|
伊人热人久久中文字幕
|
看久久久久久a级毛片
|
日韩va亚洲va欧美va久久
|
久久精品人成免费
|
国产aⅴ激情无码久久
|
香蕉aa三级久久毛片
|
久久久久久A亚洲欧洲AV冫
|
波多野结衣中文字幕久久
|
国产精品久久婷婷六月丁香
|
久久精品免费大片国产大片
|
久久免费视频观看
|
99久久久久
|
欧美日韩成人精品久久久免费看
|
亚洲综合婷婷久久
|
国产精品日韩深夜福利久久
|
国产精品久久久久久福利漫画
|
久久久久久午夜成人影院
|
久久精品国产亚洲一区二区三区
|
久久久久亚洲精品天堂久久久久久
|
粉嫩小泬无遮挡久久久久久
|
久久无码人妻一区二区三区
|
狠狠精品久久久无码中文字幕
|
人妻无码久久一区二区三区免费
|
久久久久AV综合网成人
|
精品国产青草久久久久福利
|
97久久婷婷五月综合色d啪蜜芽
|
成人国内精品久久久久影院
|