Python網(wǎng)路數據采集之讀取文件|第05天
優(yōu)采云 發(fā)布時(shí)間: 2020-08-14 08:59User:你好我是森林
Date:2018-04-01
Mark:《Python網(wǎng)路數據采集》
網(wǎng)絡(luò )采集系列文章
Python網(wǎng)路數據采集之創(chuàng )建爬蟲(chóng)
Python網(wǎng)路數據采集之HTML解析
Python網(wǎng)路數據采集之開(kāi)始采集
Python網(wǎng)路數據采集之使用API
Python網(wǎng)路數據采集之儲存數據
讀取文檔文檔編碼
文檔編碼的方法一般可以依照文件的擴充名進(jìn)行判定,雖然文件擴充名并不是由編碼確定的,而是由開(kāi)發(fā)者確定的。從最底層的角度看,所有文檔都是由 0和 1 編碼而成的。例如我我們將一個(gè)后綴為png的圖片后綴改為.py。用編輯器打打開(kāi)就完全不對了。
只要安裝了合適的庫, Python 就可以幫你處理任意類(lèi)型的文檔。純文本文件、視頻文件和圖象文件的惟一區別,就是它們的 0和1 面向用戶(hù)的轉換方法不同。
純文本
對于純文本的文件獲取的方法很簡(jiǎn)單,用 urlopen 獲取了網(wǎng)頁(yè)以后,我們會(huì )把它轉變成 BeautifulSoup對象。
from urllib.request import urlopen
textPage = urlopen(
"http://www.pythonscraping.com/pages/warandpeace/chapter1.txt")
print(textPage.read())
CSV 文件
Python有一個(gè)標準庫對CSV文件的處理非常的友好,可以處理各種的CSV文件。文檔地址
讀取CSV文件
Python 的csv 庫主要是面向本地文件,就是說(shuō)你的 CSV 文件得存貯在你的筆記本上。而進(jìn)行網(wǎng)路數據采集的時(shí)侯,很多文件都是在線(xiàn)的。有幾個(gè)參考解決辦法:
例如獲取網(wǎng)上的CSV文件,然后輸出命令行。
from urllib.request import urlopen
from io import StringIO
import csv
data = urlopen("http://pythonscraping.com/files/MontyPythonAlbums.csv").read().decode('ASCII','ignore')
dataFile = StringIO(data)
csvReader = csv.reader(dataFile)
for row in csvReader:
print(row)
輸出的結果:
['Name', 'Year']
["Monty Python's Flying Circus", '1970']
['Another Monty Python Record', '1971']
["Monty Python's Previous Record", '1972']
['The Monty Python Matching Tie and Handkerchief', '1973']
['Monty Python Live at Drury Lane', '1974']
['An Album of the Soundtrack of the Trailer of the Film of Monty Python and the Holy Grail', '1975']
['Monty Python Live at City Center', '1977']
['The Monty Python Instant Record Collection', '1977']
["Monty Python's Life of Brian", '1979']
["Monty Python's Cotractual Obligation Album", '1980']
["Monty Python's The Meaning of Life", '1983']
['The Final Rip Off', '1987']
['Monty Python Sings', '1989']
['The Ultimate Monty Python Rip Off', '1994']
['Monty Python Sings Again', '2014']
PDF 文件
PDFMiner3K是一個(gè)非常好用的庫(是PDFMiner的Python 3.x移植版)。它十分靈活,可以通過(guò)命令行使用,也可以整合到代碼中。它還可以處理不同的語(yǔ)言編碼,而且對網(wǎng)路文件的處理也十分便捷。
下載解壓后用python setup.py install完成安裝。
模塊的源文件下載地址:
例如可以把任意 PDF 讀成字符串,然后用 StringIO轉換成文件對象。
from urllib.request import urlopen
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open
def readPDF(pdfFile):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, laparams=laparams)
process_pdf(rsrcmgr, device, pdfFile)
device.close()
content = retstr.getvalue() retstr.close()
return content
pdfFile = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")
outputString = readPDF(pdfFile)
print(outputString)
pdfFile.close()
readPDF 函數最大的用處是,如果PDF文件在筆記本里,就可以直接把 urlopen返回的對象 pdfFile 替換成普通的 open() 文件對象:
pdfFile = open("./chapter1.pdf", 'rb')
如果本文對你有所幫助,歡迎喜歡或則評論;如果你也對網(wǎng)路采集感興趣,可以點(diǎn)擊關(guān)注,這樣才能夠收到后續的更新。感謝您的閱讀。