Python快速开发分布式搜索引擎Scrapy精讲—爬虫数据保存

Python快速开发分布式搜索引擎Scrapy精讲—爬虫数据保存,第1张

概述注意:数据保存的 *** 作都是在pipelines.py文件里 *** 作的 将数据保存为json文件 spider是一个信号检测 # -*- coding: utf-8 -*-# Define your item pipelines here## Don‘t forget to add your pipeline to the ITEM_PIPELINES setting# See: http:// 注意:数据保存的 *** 作都是在pipelines.py文件里 *** 作的

将数据保存为Json文件

spIDer是一个信号检测

# -*- Coding: utf-8 -*-# define your item pipelines here## Don‘t forget to add your pipeline to the ITEM_PIPElines setting# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.HTMLfrom scrapy.pipelines.images import ImagesPipeline  #导入图片下载器模块import codecsimport Jsonclass AdcPipeline(object):                      #定义数据处理类,必须继承object    def __init__(self):        self.file = codecs.open(‘shuju.Json‘,‘w‘,enCoding=‘utf-8‘)  #初始化时打开Json文件    def process_item(self,item,spIDer):       #process_item(item)为数据处理函数,接收一个item,item里就是爬虫最后yIEld item 来的数据对象        # print(‘文章标题是:‘ + item[‘Title‘][0])        # print(‘文章缩略图url是:‘ + item[‘img‘][0])        # print(‘文章缩略图保存路径是:‘ + item[‘img_tplj‘])  #接收图片下载器填充的,图片下载后的路径        #将数据保存为Json文件        lines = Json.dumps(dict(item),ensure_ascii=False) + ‘\n‘   #将数据对象转换成Json格式        self.file.write(lines)          #将Json格式数据写入文件        return itemdef spIDer_closed(self,spIDer):     #创建一个方法继承spIDer,spIDer是一个信号,当前数据 *** 作完成后触发这个方法        self.file.close()               #关闭打开文件class imgPipeline(ImagesPipeline):                      #自定义一个图片下载内,继承crapy内置的ImagesPipeline图片下载器类    def item_completed(self,results,info):      #使用ImagesPipeline类里的item_completed()方法获取到图片下载后的保存路径        for ok,value in results:            img_lj = value[‘path‘]     #接收图片保存路径            # print(ok)            item[‘img_tplj‘] = img_lj  #将图片保存路径填充到items.py里的字段里        return item                    #将item给items.py 文件的容器函数    #注意:自定义图片下载器设置好后,需要在

如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的。交流经验。从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

将数据保存到数据库

我们使用一个ORM框架sqlalchemy模块,保存数据

数据库 *** 作文件

#!/usr/bin/env python# -*- Coding:utf-8 -*-from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Columnfrom sqlalchemy import Integer,String,TIMESTAMPfrom sqlalchemy import ForeignKey,UniqueConstraint,Indexfrom sqlalchemy.orm import sessionmaker,relationshipfrom sqlalchemy import create_engine#配置数据库引擎信息ENGINE = create_engine("MysqL+pyMysqL://root:[email protected]:3306/cshi?charset=utf8",max_overflow=10,echo=True)Base = declarative_base()       #创建一个sqlORM基类class SendMsg(Base):            #设计表    __tablename__ = ‘sendmsg‘    ID = Column(Integer,primary_key=True,autoincrement=True)    Title = Column(String(300))    img_tplj = Column(String(300))def init_db():    Base.Metadata.create_all(ENGINE)        #向数据库创建指定表def drop_db():    Base.Metadata.drop_all(ENGINE)          #向数据库删除指定表def session():    cls = sessionmaker(bind=ENGINE)         #创建sessionmaker类, *** 作表    return cls()# drop_db()         #删除表# init_db()         #创建表

pipelines.py文件

在学习过程中有什么不懂得可以加我的python学习交流扣扣qun,784758214群里有不错的学习视频教程、开发工具与电子书籍。与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容# -*- Coding: utf-8 -*-# define your item pipelines here## Don‘t forget to add your pipeline to the ITEM_PIPElines setting# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.HTMLfrom scrapy.pipelines.images import ImagesPipeline  #导入图片下载器模块from adc import shujuku as ORM                      #导入数据库文件class AdcPipeline(object):                      #定义数据处理类,必须继承object    def __init__(self):        ORM.init_db()                           #创建数据库表    def process_item(self,spIDer):       #process_item(item)为数据处理函数,接收一个item,item里就是爬虫最后yIEld item 来的数据对象        print(‘文章标题是:‘ + item[‘Title‘][0])        print(‘文章缩略图url是:‘ + item[‘img‘][0])        print(‘文章缩略图保存路径是:‘ + item[‘img_tplj‘])  #接收图片下载器填充的,图片下载后的路径        mysq = ORM.session()        shuju = ORM.SendMsg(Title=item[‘Title‘][0],img_tplj=item[‘img_tplj‘])        mysq.add(shuju)        mysq.commit()        return itemclass imgPipeline(ImagesPipeline):                      #自定义一个图片下载内,继承crapy内置的ImagesPipeline图片下载器类    def item_completed(self,value in results:            img_lj = value[‘path‘]     #接收图片保存路径            # print(ok)            item[‘img_tplj‘] = img_lj  #将图片保存路径填充到items.py里的字段里        return item                    #将item给items.py 文件的容器函数    #注意:自定义图片下载器设置好后,需要在
总结

以上是内存溢出为你收集整理的Python快速开发分布式搜索引擎Scrapy精讲—爬虫数据保存全部内容,希望文章能够帮你解决Python快速开发分布式搜索引擎Scrapy精讲—爬虫数据保存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存