程序猿的日常
今天来讲讲数据存储器,这个话题相对简单。
上一节“HTML解析器”输出的数据为字典类型。由于数据量较小,可以把数据存储为文件。当数据量较大的时候,将其存储为单个文件就不合适了,可以考虑存储为多个文件或是存入数据库。为了避免频繁读写文件,可以先把每个循环得到的数据以列表的形式暂存在内存里,等到全部页面爬取结束后再存至文件。
代码如下:
import codecs ''' DataOutput ''' class DataOutput(object): def __init__(self): self.datas = [] #可以将数据暂存在这个列表里 #每个循环调用一次此函数,暂存数据 def store_data(self, data): if data is None: print "data is None" return self.datas.append(data) #全部页面爬取结束后调用此函数,写入文件 def output_html(self): fout=codecs.open('baike.html', 'w', encoding='utf-8') fout.write("") fout.close() self.datas = [] #清空表格,释放内存
这里将数据写入了html文件,这样在浏览器中便能打开,方便阅读。
代码中使用了codecs库,对于中文的读写来说,使用codecs.open()这个函数在编码上会简单许多,具体请查看 这篇博文。
OK,至此,一个简单的爬虫框架就写好了,当然,这只是个简单的开始。在实际的操作当中,要经常面临着网站反爬虫机制的步步紧逼,与屏幕那头的码农的较量才刚刚开始。
领取专属 10元无门槛券
私享最新 技术干货