《python网络数据采集》读后感 第六章:读取文档
1.文檔編碼:
文檔編碼是一種告訴程序——無論是計算機的操作系統還是?Python?代碼——讀取文檔的規 則。文檔編碼的方式通常可以根據文件的擴展名進行判斷,雖然文件擴展名并不是由編碼 確定的,而是由開發者確定的。例如,如果我把?myImage.jpg?另存為?myImage.txt,不會出 現任何問題,但當我用文本編輯器打開它的時候就有問題了。好在這種情況很少見,如果 要正確地讀取一個文檔,必須要知道它的擴展名。
2.純文本:
雖然把文件存儲為在線的純文本格式并不常見,但是一些簡易網站,或者擁有大量純文本 文件的“舊式學術”(old-school)網站經常會這么做。例如,互聯網工程任務組(Internet Engineering Task Force,IETF)網站就存儲了?IETF?發表過的所有文檔,包含?HTML、PDF和純文本格式(例如?https://www.ietf.org/rfc/rfc1149.txt)。大多數瀏覽器都可以很好地顯示 純文本文件,采集它們也不會遇到什么問題。
對大多數簡單的純文本文件,像?http://www.pythonscraping.com/pages/warandpeace/chapter1. txt?這個練習文件,你可以用下面的方法讀取:
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?文件得存儲在你的電腦上。而進行網絡數據采集的時候,很多文件都是在線的。
-
手動把?CSV?文件下載到本機,然后用?Python?定位文件位置;
-
寫?Python?程序下載文件,讀取之后再把源文件刪除;
-
從網上直接把文件讀成一個字符串,然后轉換成一個?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'))把一個遠程?Word?文檔讀成一個二進制文件對象,再用?Python?的標準庫?zipfile?解壓(所有的?.docx?文件為了節省空間都 進行過壓縮),然后讀取這個解壓文件,就變成?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 #不打印標簽 23 pass 24 print(textElem.text) 25 print(closeTag)?
?
?
轉載于:https://www.cnblogs.com/chengchengaqin/p/9514913.html
總結
以上是生活随笔為你收集整理的《python网络数据采集》读后感 第六章:读取文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀貂蝉的装备和铭文(貂蝉带什么铭文
- 下一篇: [python] 列表解析式的高效与简洁