wordpress 后台访问慢,天津百度首页优化排名,个人网页优秀作品,网站建设一级页面二级页面前两天老大布置一个任务#xff0c;说爬下来的数据要存入数据库中#xff0c;丢给我一个peewee#xff0c;说用这个。当时的我两眼一抹黑#xff0c;这是个什么东西呀#xff0c;我知道scrapy的数据存入数据库是在pipelines中进行设置但是peewee是什么东西呢。经过两天不懈…前两天老大布置一个任务说爬下来的数据要存入数据库中丢给我一个peewee说用这个。当时的我两眼一抹黑这是个什么东西呀我知道scrapy的数据存入数据库是在pipelines中进行设置但是peewee是什么东西呢。经过两天不懈的努力终于呀成功了peeweepeewee 是一款数据库 ORM 库可以很方便的帮你把对象和数据库表进行映射从而让你不用写一句 SQL 就能操作数据库我们爬到的数据需要写到 mysql 数据库中。这句话就是说当我们数据库设置好字段时可以通过这个库直接生成一个包含数据库表的所有字段和字段的各种设置数据库表字段peewee可以用一条命令生成关于该数据库表的字段设置从现有数据库生成相应的模块使用pwiz实现python -m pwiz -e mysql -H localhost -u root -P root user md.pypython3 -m pwiz -e mysql(数据库) -H 服务器名 -p 端口号 -u 用户名 -P 密码 数据库名称 生成文件名生成文件from peewee import *database MySQLDatabase(user, **{host: localhost, password: root, user: root})class UnknownField(object):def __init__(self, *_, **__): passclass BaseModel(Model):class Meta:database databaseclass Art(BaseModel):inc TextField()top TextField()m5d CharField(indexTrue, nullTrue)wfrm TextField(nullTrue)html CharField()class Meta:db_table dbindexes (((inc), False),((wfrm), False),)model与fields对应关系:在peewee中一个继承model类的类定义为某个数据库的一个表格如上面我们的art表就是继承baseModel类。类中的field为数据库中的列(字段)OK生成db.py后放在scrapy中与pilelines同一级目录下pipelines在pileline中引入该文件(不要忘了db文件前还有一个.)from .db import Artpipelines中我定义了两个类一个类用于把数据输出为json格式一个类用于把数据保存到数据库中import codecsimport jsonclass WccPlaPipeline(object):def __init__(self):self.file codecs.open(保存的文件名.json,wb,encodingutf-8)#这个方法必须返回一个Item对象参数item:被爬取的item#spider爬取该item的spiderdef process_item(self, item, spider):#打开JSON文件向里面以dumps的方式吸入数据#其中ensure_asciiFalse不然数据会直接为utf编码的方式存入line json.dumps(dict(item),ensure_asciiFalse)\nself.file.write(line)return itemclass MysqlPipeline(object):def process_item(self,item,spider):if Art.table_exists() False:Art.create_table()data Art(titleitem[title],textitem[text])data.save()return itemjson文件和自编写的spider在同一级目录下,这里我只用了peewee的插入语句对其他语句感兴趣的小伙伴可以自行百度哦settings的设置由于pipelines中定义了两个类所以要在settings中给这两个类设置一个执行的优先级顺序ITEM_PIPELINES {项目名.pipelines.MysqlPipeline: 300,项目名.pipelines.Pipeline: 100,}这样就可以执行scrapy啦