需求描述:
将爬取的新闻数据按照、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')
【结果】