需求描述:
將爬取的新聞數據按照、url地址、url Id、新聞標題、新聞內容字段寫入excel表
1.安裝並導入xlwt模塊
2.主要函數介紹
- enumerate 函數用於遍歷序列中的元素以及它們的下標
- w=xlwt.workbook()創建工作簿,可以指定編碼格式
- shet=w.add_sheet(name)創建Excel的sheet頁,並指定頁名
- shet.write(row,col,value,style)寫入數據,style可以指定單元格應用樣式
- w.save(filepath)保存文件
3.代碼實現
#-!- coding: utf-8 -!- import re from numpy import * from xlwt import * #獲取新聞數據集 def loadDataSet(): with open(r'..\dataSet\sogou\news_sohu.dat','r',encoding='utf-8') as f: #獲取文本全部內容 data=f.readlines() #用於正則匹配 reDoc='<doc>(.*?)</doc>' reContent = r'<content>(.*?)</content>' reContenttitle = r'<contenttitle>(.*?)</contenttitle>' reURLID = r'<docno>(.*?)</docno>' reURL = r'<url>(.*?)</url>' #獲取每條新聞相關的信息 r=re.compile(reDoc) #正則表達式參數需要字符串形式,所以需要強制轉換一下 dataGroup=r.findall(str(data)) #列表存放數據 returnData=[] #獲取頁面URl地址、URlid、新聞標題、新聞內容 for i in range(len(dataGroup)): listRow=[] listRow.extend(re.findall(reURL,dataGroup[i],re.S|re.M)) listRow.extend(re.findall(reURLID,dataGroup[i],re.S|re.M)) listRow.extend(re.findall(reContenttitle,dataGroup[i],re.S|re.M)) listRow.extend(re.findall(reContent, dataGroup[i],re.S|re.M)) returnData.append(listRow) return returnData dataSet=loadDataSet() file=Workbook(encoding='UTF-8') table=file.add_sheet('newsData') #表頭 tb_head=[u'URL地址',u'URLID',u'新聞標題',u'新聞內容'] for col,title in enumerate(tb_head): #行的序號從0開始 table.write(0,col,title) for row in range(len(dataSet)): for col,v in enumerate(dataSet[row]): #row+1避免出現重寫 table.write(row+1,col,v) file.save('newData') print('down')
【結果】