《python网络数据采集》读后感 第六章:读取文档
1.文檔編碼:
文檔編碼是一種告訴程序——無論是計算機(jī)的操作系統(tǒng)還是?Python?代碼——讀取文檔的規(guī) 則。文檔編碼的方式通常可以根據(jù)文件的擴(kuò)展名進(jìn)行判斷,雖然文件擴(kuò)展名并不是由編碼 確定的,而是由開發(fā)者確定的。例如,如果我把?myImage.jpg?另存為?myImage.txt,不會出 現(xiàn)任何問題,但當(dāng)我用文本編輯器打開它的時候就有問題了。好在這種情況很少見,如果 要正確地讀取一個文檔,必須要知道它的擴(kuò)展名。
2.純文本:
雖然把文件存儲為在線的純文本格式并不常見,但是一些簡易網(wǎng)站,或者擁有大量純文本 文件的“舊式學(xué)術(shù)”(old-school)網(wǎng)站經(jīng)常會這么做。例如,互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)網(wǎng)站就存儲了?IETF?發(fā)表過的所有文檔,包含?HTML、PDF和純文本格式(例如?https://www.ietf.org/rfc/rfc1149.txt)。大多數(shù)瀏覽器都可以很好地顯示 純文本文件,采集它們也不會遇到什么問題。
對大多數(shù)簡單的純文本文件,像?http://www.pythonscraping.com/pages/warandpeace/chapter1. txt?這個練習(xí)文件,你可以用下面的方法讀取:
1 from urllib.request import urlopen 2 3 textPage = urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1-ru.txt") 4 print(str(textPage.read(),'utf-8'))?
3.CSV:
Python?的?csv?庫主要是面向本地文件,就是說你的?CSV?文件得存儲在你的電腦上。而進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)采集的時候,很多文件都是在線的。
-
手動把?CSV?文件下載到本機(jī),然后用?Python?定位文件位置;
-
寫?Python?程序下載文件,讀取之后再把源文件刪除;
-
從網(wǎng)上直接把文件讀成一個字符串,然后轉(zhuǎn)換成一個?StringIO?對象,使它具有文件的
屬性。
4. PDF:
?
5. dox:
a. 從文件讀取XML
1 from urllib.request import urlopen 2 from zipfile import ZipFile 3 from io import BytesIO 4 5 wordFile = urlopen("http://pythonscraping.com/pages/AWordDocument.docx").read() 6 wordFile = BytesIO(wordFile) 7 document = ZipFile(wordFile) 8 xml_content = document.read('word/document.xml') 9 print(xml_content.decode('utf-8'))把一個遠(yuǎn)程?Word?文檔讀成一個二進(jìn)制文件對象,再用?Python?的標(biāo)準(zhǔn)庫?zipfile?解壓(所有的?.docx?文件為了節(jié)省空間都 進(jìn)行過壓縮),然后讀取這個解壓文件,就變成?XML?了。
1 from urllib.request import urlopen 2 from zipfile import ZipFile 3 from io import BytesIO 4 from bs4 import BeautifulSoup 5 6 wordFile = urlopen("http://pythonscraping.com/pages/AWordDocument.docx").read() 7 wordFile = BytesIO(wordFile) 8 document = ZipFile(wordFile) 9 xml_content = document.read('word/document.xml') 10 11 wordObj = BeautifulSoup(xml_content.decode('utf-8')) 12 textStrings = wordObj.findAll("w:t") 13 14 for textElem in textStrings: 15 closeTag = "" 16 try : 17 style = textElem.parent.previousSibling.find("w:pstyle") 18 if style is not None and style["w:val"] == "Title": 19 print("<h1>") 20 closeTag = "<h1>" 21 except AttributeError: 22 #不打印標(biāo)簽 23 pass 24 print(textElem.text) 25 print(closeTag)?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/chengchengaqin/p/9514913.html
總結(jié)
以上是生活随笔為你收集整理的《python网络数据采集》读后感 第六章:读取文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀貂蝉的装备和铭文(貂蝉带什么铭文
- 下一篇: machenike电脑怎么样(mache