引言
眾所周知,python最強大的地方在于挺举,python社區(qū)匯總擁有豐富的第三方庫捐名,開源的特性,使得有越來越多的技術(shù)開發(fā)者來完善
python的完美性谜嫉。
未來人工智能萎坷,大數(shù)據(jù)方向,區(qū)塊鏈的識別和進(jìn)階都將以python為中心來展開沐兰。
咳咳咳哆档! 好像有點打廣告的嫌疑了。
當(dāng)前互聯(lián)網(wǎng)信息共享時代住闯,最重要的是什么?是數(shù)據(jù)瓜浸。最有價值的是什么?是數(shù)據(jù)比原。最能直觀體現(xiàn)技術(shù)水平的是什么?還是數(shù)據(jù)插佛。
所以,今天我們要分享的是:如何來獲取各個文件格式的文本信息量窘。
普通文件的格式 一般分為: txt普通文本信息雇寇,doc word文檔,html網(wǎng)頁內(nèi)容蚌铜,excel表格數(shù)據(jù)谢床,以及特殊的mht文件。
一厘线,python處理html網(wǎng)頁信息。
html類型的文本數(shù)據(jù)出革,內(nèi)容是由前端代碼書寫的標(biāo)簽+文本數(shù)據(jù)的格式造壮,可以直接在chrome瀏覽器打開,清楚 的展示出文本的格式骂束。
python 獲取html文件的內(nèi)容和獲取txt文件的方法相同耳璧,直接打開文件讀取就可以了。
讀取代碼如下:
with open(html_path, "r", encoding="utf-8") as f:
file = f.read()
1
2
file 是html文件的文本內(nèi)容展箱。是一個網(wǎng)頁標(biāo)簽的格式內(nèi)容旨枯。
二,python處理excel表格信息混驰。
python擁有直接操作excel表格的第三方庫xlwt,xlrd攀隔。調(diào)用對應(yīng)的方法就可以讀寫excel表格數(shù)據(jù)皂贩。
讀取excel操作代碼如下:
filepath = "C:\\Users\Administrator\Desktop\新建文件夾\笨笨 前程6份 武漢.xls"
sheet_name = "UserList"
rb = xlrd.open_workbook(filepath)
sheet = rb.sheet_by_name(sheet_name)
# clox_list = [0, 9, 14, 15, 17]
for row in range(1, sheet.nrows):
w = WriteToExcel()
# for clox in clox_list:
name = sheet.cell(row, 0).value
phone = sheet.cell(row, 15).value
address = sheet.cell(row, 9).value
major = sheet.cell(row, 14).value
age = sheet.cell(row, 8).value
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
其中row是表格數(shù)據(jù)對應(yīng)的行數(shù), cell獲取具體行數(shù)昆汹,列數(shù)的具體數(shù)據(jù)明刷。
三,python讀取doc文檔數(shù)據(jù)满粗。
python讀取doc文檔是最麻煩的辈末。處理邏輯復(fù)雜。處理的方式也有很多種映皆。
python 沒有直接處理doc文檔的第三方庫挤聘,但是有一個處理docx的第三方庫⊥背梗可以通過將doc文件轉(zhuǎn)換為docx文件组去,再調(diào)用第三方python庫pydocx來讀取doc文檔的內(nèi)容。
這里需要注意的是,不要直接修改doc的后綴來修改成docx文件沟饥。直接通過修改后綴獲取的docx文件添怔,pydocx無法讀取內(nèi)容。
我們可以使用另外一個庫來修改doc為docx贤旷。
具體代碼如下:
def doSaveAas(self, doc_path):
"""
將doc文檔轉(zhuǎn)換為docx文檔
:rtype: object
"""
docx_path = doc_path.replace("doc", "docx")
word = wc.Dispatch('Word.Application')
doc = word.Documents.Open(doc_path) # 目標(biāo)路徑下的文件
doc.SaveAs(docx_path, 12, False, "", True, "", False, False, False, False) # 轉(zhuǎn)化后路徑下的文件
doc.Close()
word.Quit()
1
2
3
4
5
6
7
8
9
10
11
12
13
代碼所需的包接口:
python處理docx文檔的方法有很多種广料,具體使用情況,根據(jù)個人需求來決定幼驶。
No.1 解壓docx文件艾杏。
docx文件的原理,本質(zhì)上就是一個壓縮的zip文件盅藻,通過解壓以后购桑,就可以獲取原來文件的各個內(nèi)容。
docx解壓后的文件結(jié)構(gòu)如下:
docx文件的文本內(nèi)容存儲結(jié)構(gòu)如下:
文本內(nèi)容存儲于word/document.xml文件中氏淑。
第一種方法勃蜘,我們就可以先將docx還原成zip壓縮文件,再解壓zip文件假残,讀取word/document.xml文件的內(nèi)容就ok了缭贡。
具體操作代碼如下:
def get_content(self):
"""
獲取docx文檔的文本內(nèi)容
:rtype: object
"""
os.chdir(r"C:\Users\Administrator\Desktop\新建文件夾") # 改變目錄到文件的目錄
#
os.rename("51 2014.09.12 1份Savannah.docx", "51 2014.09.12 1份Savannah.ZIP") # 重命名為zip文件
f = zipfile.ZipFile('51 2014.09.12 1份Savannah.ZIP', 'r') # 進(jìn)行解壓
xml = f.read("word/document.xml")
wordObj = BeautifulSoup(xml.decode("utf-8"))
# print(wordObj)
texts = wordObj.findAll("w:t")
content = []
for text in texts:
content.append(text.text)
content_str = "".join(content)
return content_str
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
最后獲取到的就是docx文檔的所有文本數(shù)據(jù)了。
No.2 將docx文檔轉(zhuǎn)換成python能夠處理的文本格式辉懒。
第一種方法阳惹,是依據(jù)docx文檔的原理來獲取數(shù)據(jù),流程有點繁瑣,有沒有能直接讀取docx文檔內(nèi)容的方法呢眶俩?答案莹汤,肯定是沒有的,別想了颠印,洗洗回家睡吧纲岭。
直接讀取docx文檔的方法沒有抹竹,有沒有能夠?qū)ocx文檔轉(zhuǎn)換成python能夠輕松處理的文本格式呢?
這個可以有荒勇,前面說了柒莉,python擁有大量豐富的第三方庫(先夸一波我大python),歷經(jīng)千辛萬苦終于找到了,一個能轉(zhuǎn)換docx文檔格式的第三方庫,pydocx,pydocx庫中有個方法pydocx.to_html()就可以直接將docx文檔轉(zhuǎn)換為html文件沽翔,怎么樣兢孝?意不意外,驚喜不驚喜仅偎!
第二種方法跨蟹,轉(zhuǎn)換文本格式的代碼如下:
def docx_to_html(self, docx_path):
"""
docx文檔轉(zhuǎn)換成html響應(yīng)
:rtype: object
"""
# docx_path = "C:\\Users\Administrator\Desktop\新建文件夾\\51 2014.09.12 1份Savannah.docx"
response = PyDocX.to_html(docx_path)
1
2
3
4
5
6
7
獲取到的response是html文件內(nèi)容。
四橘沥,python處理mht文件窗轩。
mht文件是一種只能在IE瀏覽器上展示的文本格式,在chrome瀏覽器中打開是一堆的亂碼座咆。
No.1 偽造IE請求mht文件內(nèi)容
最基礎(chǔ)的讀取mht文本的方法就是偽造IE瀏覽器請求痢艺。
調(diào)用requests庫,發(fā)送get請求網(wǎng)頁鏈接介陶,構(gòu)造IE的請求頭信息堤舒。
理論上來說,這種方法是可行的哺呜。但是呢舌缤,不建議用,原因大家都懂得某残。
No.2 轉(zhuǎn)換文件格式
好了說正經(jīng)的方法国撵,猜測mht文件能否修改成其他文件格式來直接讀取呢?
docx,不行玻墅;html介牙,不行;excel澳厢,更不用說了耻瑟。
真相只有一個!I退帧!
直接修改后綴得到的docx谆构,無法讀取裸扶。
so,我們想到的方法是什么呢。沒錯搬素,就是修改成doc文檔呵晨。
方法是匪夷所思的魏保,但也是靈感一現(xiàn)。
mht可以直接通過修改后綴轉(zhuǎn)換成doc文檔摸屠,doc文檔讀取文本內(nèi)容的方法具體參考上面讀取doc文檔的方法谓罗。
如何獲取html文本的內(nèi)容?
html文本的內(nèi)容是網(wǎng)頁結(jié)構(gòu)標(biāo)簽數(shù)據(jù)季二,取出文本的方式是:re正則檩咱,或者xpath。
后續(xù)胯舷,小伙伴有需要的話刻蚯,會再開一章詳細(xì)了解re,xapth的使用規(guī)則。
如果有問題的話桑嘶,也可以隨時留言炊汹,感謝觀看!逃顶!
作者:Faker2.0
來源:CSDN
原文:https://blog.csdn.net/mygodit/article/details/90515039
版權(quán)聲明:本文為博主原創(chuàng)文章讨便,轉(zhuǎn)載請附上博文鏈接!