python--爬虫--获取和解析存储网页内容--以薄荷网为例(14)
- UID
- 1066743
|
python--爬虫--获取和解析存储网页内容--以薄荷网为例(14)
并行处理–多线程抓取
单线程抓取和解析都会比较慢,可以使用多线程进行处理。
python的多线程使用参考
python积累–多线程的使用实例
存储
写入excel
import xlwt
class ToutiaoPipeline(object):
def __init__(self):
self.book=xlwt.Workbook()
self.sheet=self.book.add_sheet('sheet', cell_overwrite_ok=True)
head=[u'名字', u'点赞', u'回复', u'评论']
i=0
for h in head:
self.sheet.write(0, i, h)
i += 1
def process_item(self,item,spider):
self.sheet.write(item['Num'],0,item['name'])
self.sheet.write(item['Num'],1,item['like'])
self.sheet.write(item['Num'],2,item['reply'])
self.sheet.write(item['Num'],3,item['text'])
self.book.save('TouTiao.xls')
存入mongodb
参考 python使用pymongo读写mongodb
存入mysql
pandas表格导入MySQL数据库
pandas提供了将数据便捷存入关系型数据库的方法,在新版的pandas中,主要是已sqlalchemy方式与数据建立连接,支持MySQL、Postgresql、Oracle、MS SQLServer、SQLite等主流数据库。本例以MySQL数据库为代表,展示将获取到的股票数据存入数据库的方法,其他类型数据库请参考sqlalchemy官网文档的create_engine部分。
常用参数说明:
name:表名,pandas会自动创建表结构
con:数据库连接,最好是用sqlalchemy创建engine的方式来替代con
flavor:数据库类型 {‘sqlite’, ‘mysql’}, 默认‘sqlite’,如果是engine此项可忽略
schema:指定数据库的schema,默认即可
if_exists:如果表名已存在的处理方式 {‘fail’, ‘replace’, ‘append’},默认‘fail’
index:将pandas的Index作为一列存入数据库,默认是True
index_label:Index的列名
chunksize:分批存入数据库,默认是None,即一次性全部写人数据库
dtype:设定columns在数据库里的数据类型,默认是None
调用方法:
from sqlalchemy import create_engine
import tushare as ts
df = ts.get_tick_data('600848', date='2014-12-22')
engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8')
#存入数据库
df.to_sql('tick_data',engine)
#追加数据到现有表
#df.to_sql('tick_data',engine,if_exists='append') |
|
|
|
|
|