《Python网络爬虫基础教程》课件 第7章 存储数据_第1页
《Python网络爬虫基础教程》课件 第7章 存储数据_第2页
《Python网络爬虫基础教程》课件 第7章 存储数据_第3页
《Python网络爬虫基础教程》课件 第7章 存储数据_第4页
《Python网络爬虫基础教程》课件 第7章 存储数据_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章存储数据《Python网络爬虫基础教程》学习目标/Target了解数据存储的两种方式,能够说出文件存储和数据库存储的利弊掌握MongoDB数据库的安装方式,能够独立安装MongoDB数据库掌握Python操作MongoDB数据库的方式,能够使用pymongo库操作MongoDB数据库掌握Redis数据库的安装,能够独立在计算机上安装Redis数据库掌握Python操作Redis的方式,能够使用redis库操作Redis数据库章节概述/Summary在实际应用中,网络爬虫在完成网页数据的抓取与解析后,会提取出最终需要的目标数据,这些数据需通过持久化存储加以留存,为后续的数据研究工作提供基础支撑。数据存储主要分为文件存储和数据库存储两种方式,其中文件存储我们在前面的项目开发中已有所接触,在本章中,着重介绍使用数据库存储网络爬虫采集到的数据。目录/Contents7.17.27.3数据存储的方式存储至MongoDB数据库存储至Redis数据库7.4实践项目:采集小兔鲜儿网的商品信息数据存储方式7.1了解数据存储的两种方式,能够说出文件存储和数据库存储的利弊学习目标7.1数据存储的方式数据存储是网络爬虫开发的关键收尾环节,主要任务是将解析后的结构化数据进行持久化存储,为后续的数据分析建模、趋势预测研究等工作提供数据支持。从实际应用来看,网络爬虫采集的数据主要通过两种方式实现存储。7.1数据存储的方式文件存储是网络爬虫数据存储中最基础、最易上手的方式。它通过将解析后的数据直接以文件形式保存到本地计算机的磁盘中,完成数据的持久化。前文中涉及的多个爬虫案例,均采用这种方式实现数据存储。这种方式的优势在于无需依赖额外的软件或服务,操作流程简单直观,对于数据量较小、结构单一的中小型爬虫场景,能以极低的技术成本满足需求,是入门级开发者的理想选择。7.1数据存储的方式1.文件存储尽管文件存储能实现数据的基本留存,但在处理大规模、多维度数据时存在明显局限:大量文件会零散分布在本地目录中,不仅占用冗余存储空间,更会导致数据结构混乱,难以通过程序高效调用。此时,数据库存储便成为更优解,它借助专业的数据库管理系统,对数据进行规范化的结构化存储,支持按字段分类管理,并能通过索引机制快速定位目标数据,有效避免重复存储问题。无论是百万级数据的批量写入,还是复杂条件的精准查询,数据库都能提供高效稳定的支持,更适合数据量庞大、业务逻辑复杂的大型网络爬虫场景。7.1数据存储的方式2.数据库存储根据存储数据时所用数据模型的不同,当今互联网中的数据库主要分为关系数据库、非关系数据库两种,分别介绍如下。关系数据库关系数据库采用严谨的二维表格关系模型来组织数据,其核心特征在于数据的高度结构化和规范化。这类数据库由相互关联的数据表构成,每个表包含行(记录实体)和列(字段属性),表间通过主外键约束建立关联关系。在使用前必须明确定义表结构,包括字段名称、数据类型、约束条件等元数据信息。这种严格的结构化设计虽然降低了灵活性,但确保了数据的完整性和一致性,支持复杂的多表关联查询和事务处理。7.1数据存储的方式2.数据库存储根据存储数据时所用数据模型的不同,当今互联网中的数据库主要分为关系数据库、非关系数据库两种,分别介绍如下。非关系数据库非关系数据库也被称为NoSQL(NotOnlySQL)数据库,它突破了传统关系模型的限制,采用更加灵活的数据组织方式。其显著特点是支持动态模式,允许不同记录拥有不同的字段结构,能够原生存储JSON文档、键值对等非结构化数据。这种设计牺牲了部分一致性,但获得了更高的水平扩展性、写入性能和灵活性,特别适合处理用户画像、日志数据、社交网络关系等。7.1数据存储的方式2.数据库存储非关系数据库非关系数据库根据数据模型的不同,主要可分为以下3种类型:列存储数据库、键值存储数据库和文档型数据库,每种类型都具有独特的存储结构和适用场景。其中,键值存储数据库采用简单的键值对结构,通过唯一的键快速访问对应的值,具有极高的读写性能,Redis是其典型代表,常被用作缓存系统。文档型数据库则在键值存储的基础上进行了扩展,采用类似JSON或XML的文档格式存储数据,每个文档可以包含多个嵌套的键值对,支持更复杂的数据结构查询,MongoDB就是这类数据库的杰出代表。7.1数据存储的方式2.数据库存储7.1数据存储的方式在数据存储方案的选择上,开发者需要根据项目规模、性能需求和业务场景进行综合考量。对于小规模测试或临时性数据,文件存储以其部署简单、无需额外服务的优势成为理想选择;而对于海量数据、高并发访问或长期存储的生产环境,数据库存储凭借其强大的索引优化、事务支持和分布式架构展现出显著优势。本书将重点讲解MongoDB和Redis这两种在网络爬虫开发中比较常用的非关系型数据库,详细介绍如何在Python中使用它们进行数据存储、查询和管理操作,帮助读者掌握实际项目中最实用的数据库操作技能。存储至MongoDB数据库7.2掌握MongoDB数据库的安装,能够独立安装MongoDB数据库学习目标7.2存储至MongoDB数据库

7.2.1下载与安装MongoDBMongoDB作为当前最流行的文档型数据库之一,采用了灵活高效的文档存储数据,每个文档都是一个包含多个键值对的独立单元。与关系型数据库不同,它对数据结构的约束极为宽松,具有结构可动态调整、查询响应迅速的显著特点。在使用MongoDB数据库之前,需要确保自己的计算机中已经安装了MongoDB数据库。本节以Windows10操作系统为例,介绍如何在计算机中下载并安装MongoDB数据库。7.2.1下载与安装MongoDB在浏览器中访问MongoDB社区版的下载页面,该页面中默认展示Windows系统支持的版本,具体如图所示。1.下载MongoDB截止本书完稿时,MongoDB的最新版本是8.0.10。单击“Download”按钮,开始将相应的安装包mongodb-windows-x86_64-8.0.10-signed下载到本地。多线程7.2.1下载与安装MongoDB步骤1步骤2步骤3步骤4MongoDB欢迎界面双击刚刚下载的安装包mongodb-windows-x86_64-8.0.10-signed.msi启动安装程序,进入WelcometotheMongoDB8.0.10界面,如图所示。2.安装MongoDB7.2.1下载与安装MongoDB步骤2步骤1步骤3步骤4勾选协议单击欢迎界面中的“Next”按钮,进入End-UserLicenseAgreement界面,如图所示。2.安装MongoDB7.2.1下载与安装MongoDB步骤3步骤1步骤2步骤4进入ChooseSetupType界面选中“IacceptthetermsintheLicenseAgreement”复选框,单击“Next”按钮进入ChooseSetupType界面,如图所示。Complete:此类型将会自动安装所有程序功能,需占用较多的磁盘空间,建议大多数用户使用。Custom:此类型允许用户自行选择要安装的程序功能及安装位置,建议有自定义需求的用户使用。2.安装MongoDB7.2.1下载与安装MongoDB步骤4步骤1步骤2步骤3进入ServiceConfiguration界面单击“Complete”按钮,进入ServiceConfiguration界面,如图所示。data文件夹:会存放创建的数据库文件。log文件夹:会存放数据库的日志文件。多线程7.2.1下载与安装MongoDB步骤5步骤6步骤7步骤8进入InstallMongoDBCompass界面保持默认选项,单击“Next”按钮,进入InstallMongoDBCompass界面,如图所示。7.2.1下载与安装MongoDB步骤6步骤5步骤7步骤8进入ReadytoinstallMongoDB界面取消勾选“InstallMongoDBCompass”复选框,单击“Next”按钮进入ReadytoinstallMongoDB8.0.102008R2PlusSSL(64bit)界面,如图所示。7.2.1下载与安装MongoDB步骤7步骤5步骤6步骤8进入CompletedtheMongoDB8.0.10界面单击“Install”按钮开始安装MongoDB数据库,并以进度条的形式持续显示当前安装的进度,安装完成后自动进入CompletedtheMongoDB8.0.10界面,如图所示。7.2.1下载与安装MongoDB步骤8步骤5步骤6步骤7完成安装单击“Finish”按钮完成安装。值得一提的是,MongoDB默认会将创建的数据库文件存储在data文件夹下的目录db,但是这个文件夹不会被自动创建,用户需要在MongoDB安装完成后手动创建目录db。在“C:\ProgramFiles\MongoDB\Server\8.0\data\”目录下创建一个文件夹db,此时的data目录结构如图所示。7.2.1下载与安装MongoDB步骤8步骤5步骤6步骤7完成安装打开命令提示符窗口,使用cd命令切换当前工作路径为MongoDB.exe所在的安装目录(本书安装的路径为“C:\ProgramFiles\MongoDB\Server\4.2\bin”),之后输入如下命令指定MongoDB数据库文件的位置为刚刚新建的db目录。mongod--dbpath"C:\ProgramFiles\MongoDB\Server\4.2\data\db"为了避免后续重复切换至MongoDB.exe的安装目录,可以将以上路径添加到环境变量中。打开命令提示符窗口,使用命令切换路径至MongoDB所在的安装目录(本书安装的路径为“C:\ProgramFiles\MongoDB\Server\8.0\bin”),之后输入如下命令手动启动MongoDB数据库服务,并指定数据库文件的存储路径为刚刚新建的db目录。mongod--dbpath"C:\ProgramFiles\MongoDB\Server\8.0\data\db"为了避免后续启动MongoDB服务器时,重复切换至MongoDB的安装目录,此处可以将以上安装目录添加到环境变量中。7.2.1下载与安装MongoDB掌握Python操作MongoDB的方式,能够使用pymongo库操作MongoDB数据库学习目标7.2.2使用Python操作MongoDB安装MongoDB数据库后,开发者可以通过Python的第三方库pymongo轻松操作MongoDB。该库提供了Python与MongoDB之间的高效数据交互支持,涵盖数据库连接管理、集合操作、灵活的CRUD(增删改查)、聚合查询、索引优化以及事务处理等核心功能,帮助开发者高效完成数据存储与检索任务。7.2.2使用Python操作MongoDB使用pymongo库之前,需要在当前的Python环境中安装pymongo库。安装指定版本pymongo库的命令如下。pipinstallpymongo==4.13.2当命令提示符窗口中输出如下信息时,说明pymongo库安装成功。7.2.2使用Python操作MongoDB……Installingcollectedpackages:dnspython,pymongoSuccessfullyinstalleddnspython-2.7.0pymongo-4.13.2安装好pymongo库以后,就可以使用pymongo库操作MongoDB数据库了。接下来,分别从创建连接、访问数据库、创建集合、插入文档、查询文档、更新文档、删除文档这几个方面介绍pymongo库的基本操作。7.2.2使用Python操作MongoDB在对MongoDB数据库的数据进行操作之前,需要先与本地的MongoDB数据库建立连接。在pymongo库中,MongoClient类的对象用于建立与MongoDB数据库的连接,它可以通过如下构造方法进行创建。__init__(self,host=None,port=None,document_class=dict,tz_aware=None,connect=None,type_registry=None,**kwargs)host:用于指定数据库所在的主机地址,默认值为'localhost',即本地主机。port:用于指定连接的端口号,默认值为27017,即数据库默认使用的端口号。document_class:用于指定数据库执行查询操作后返回文档的类型,默认值为dict,即查询结果将以字典形式返回。7.2.2使用Python操作MongoDB1.创建连接使用默认的主机地址和端口号建立与本地MongoDB数据库的连接。代码如下所示。client=MongoClient()显式地指定主机地址和端口号,示例代码如下。client=MongoClient('localhost',27017)使用MongoDB的URL路径形式传入参数,示例代码如下。client=MongoClient('mongodb://localhost:27017')7.2.2使用Python操作MongoDB1.创建连接在pymongo模块中,DataBase对象表示一个数据库。访问数据库的方式比较简单,可以直接使用“连接对象.数据库名称”的方式访问数据库。db=client.database_test#访问数据库database_test此外,还可以使用字典的形式进行访问,示例代码如下。db=client['database_test']值得一提的是,使用以上两种方式访问数据库时,若指定的数据库已经存在,则会直接访问该数据库,否则会重新创建一个数据库。7.2.2使用Python操作MongoDB2.访问数据库在pymongo模块中,Collection对象代表MongoDB中的集合,其概念类似于关系数据库中的表,但是没有固定的结构。创建集合与访问数据库的方式类似,直接通过“数据库名称.集合名称”的方式实现。coll=db.student#创建集合student也可以采用访问字典值的形式创建集合,示例代码如下。coll=db['student']7.2.2使用Python操作MongoDB3.创建集合7.2.2使用Python操作MongoDB4.插入文档集合创建完成后,即可向其中插入文档。文档是MongoDB数据库的基本数据单元,类似于关系型数据库中的记录行。在pymongo库中,文档以字典形式表示,每个文档都包含一个特殊的_id字段,用于唯一标识该文档。若插入时未显式指定_id,MongoDB将自动生成一个唯一的ObjectId值。pymongo库提供了两个向集合中插入文档的方法,分别是insert_one()和insert_many()。result=coll.insert_one({'name':'zhaoliu','age':23})insert_many()用于一次向集合中插入多条文档,代码如下。result=coll.insert_many([{'name':'zhangsan','age':20},{'name':'lisi','age':21},{'name':'wangwu','age':22}])insert_one()用于一次向集合中插入一条文档,代码如下。7.2.2使用Python操作MongoDB4.插入文档7.2.2使用Python操作MongoDB4.插入文档运行插入文档的代码,程序第一次输出一个InsertOneResult对象,说明成功插入了一个文档;程序第二次输出一个InsertManyResult对象,说明成功插入了多个文档。7.2.2使用Python操作MongoDB5.查询文档pymongo库提供了两个查询文档的方法,分别是find_one()方法和find()方法。其中,find_one()方法用于查询集合中符合条件的一个文档,若找到匹配的文档,则返回第一个匹配到的文档,否则返回None;find()方法用于查询集合中符合条件的多个文档,若找到匹配项,则返回一个可迭代的Cursor对象。result=coll.find({'age':20})print(result)可以使用for循环遍历查找的结果。fordocinresult:print(doc)使用find()方法查询集合student中age值为20的所有文档,代码如下。7.2.2使用Python操作MongoDB5.查询文档7.2.2使用Python操作MongoDB6.更新文档pymongo库提供了两个更新文档的方法,分别是update_one()和update_many()。其中,update_one()方法用于更新集合中第一个匹配筛选条件的一个文档;update_many()方法用于更新集合中所有匹配筛选条件的多个文档。这两个方法接收两个必选参数filter和update,其中参数filter用于指定筛选条件,参数update用于指定更新操作,支持使用$set、$inc等更新操作符实现字段修改、数值增减等操作。使用update_one()方法更新name为zhaoliu的文档,将该文档的age值设为25,并查看修改后的结果,示例代码如下。coll.update_one({'name':'zhaoliu'},{'$set':{'age':25}})result_update=coll.find({'name':'zhaoliu'})fordocinresult_update:print(doc)7.2.2使用Python操作MongoDB6.更新文档7.2.2使用Python操作MongoDB7.删除文档pymongo库提供了两个删除文档的方法,分别是delete_one()和delete_many()。其中,delete_one()方法用于从集合中删除第一个匹配筛选条件的文档;delete_many()方法用于从集合中删除所有匹配筛选条件的文档。coll.delete_many({})#删除集合中的所有文档result_find=coll.find({'name':'zhaoliu'})#查找name为'zhaoliu'的文档fordocinresult_find:print(doc)使用delete_many()方法删除coll中的所有文档,并查找name为zhaoliu的文档,示例代码如下。7.2.2使用Python操作MongoDB7.删除文档存储至Redis数据库7.3掌握Redis数据库的安装,能够独立安装Redis数据库学习目标7.3.1下载与安装RedisRedis数据库属于典型的键值类型的数据库,它采用键值对的形式将数据存储到内存中,具有容易部署、查询速度快、支持高并发操作等优势。由于Redis数据库具有内存存储的特性,所以它读写数据的效率非常高,但受限于内存容量,不适合大规模数据的长期存储,经常被应用到分布式网络爬虫的场景中。7.3.1下载与安装Redis在使用Redis数据库之前,我们需要确保自己的计算机中已经安装了Redis数据库。Redis官方网站为许多平台提供了安装包,但它并不支持Windows操作系统,原因在于Linux已经在服务器领域中得到了广泛的使用,在Windows上运行Redis相对显得没那么重要。尽管如此,GitHub网站上还是提供了适合Windows平台使用的版本。下面以Windows10操作系统为例,演示在计算机下载与安装Redis的过程,具体内容如下。7.3.1下载与安装Redis在浏览器中访问GitHub网站上Redis数据库的下载页面,该页面中包含了所有可以被用户下载的多个版本。截止本书完稿时,比较新且稳定的版本是8.0.2,Redis8.0.2的下载页面如图所示。7.3.1下载与安装Redis1.下载Redis单击Redis-8.0.2-Windows-x64-msys2-with-Service.zip”链接文本,开始将安装包下载到本地。7.3.1下载与安装Redis步骤1步骤2步骤3步骤4解压压缩包将安装包解压到指定目录,可以看到解压后的文件夹Redis-8.0.2Windows-x64-msys2-with-Service,将该文件夹重命名为Redis-8.0.2,打开并查看该文件夹的内容,具体如图所示。2.安装Redisinstall_redis_service.bat是用于在Windows系统上将Redis注册为服务的批处理脚本。通过该脚本,Redis可以在系统启动时自动运行,无需手动启动命令行窗口。7.3.1下载与安装Redis步骤2步骤1步骤3步骤4启动Redis服务以管理员身份运行“install_redis_service.bat”脚本文件,系统将自动打开命令行窗口,根据提示步骤完成Redis服务的启动,如图所示。2.安装Redis默认Redis的安装路径为当前路径。如果不需要修改,则直接按回车键,如果需要安装到其他位置,则需要在“InstallationPath:”后面输入具体的路径。此处不需要修改。7.3.1下载与安装Redis步骤3步骤1步骤2步骤4配置文件路径在“InstallationPath:”后面输入D:\programs\Redis-8.0.2(手动复制默认路径时省略末尾斜杠,避免因默认路径带斜杠导致配置文件路径拼接后出现双斜杠),会看到继续要求输入配置文件的路径,具体如图所示。2.安装Redis默认配置文件位于当前路径。如果不需要修改,则直接按回车键,否则需要在“ConfigurationfilePath:”后面输入配置文件的路径,此处不需要修改。7.3.1下载与安装Redis步骤4步骤1步骤2步骤3在“ConfigurationfilePath:”后面不输入任何内容,直接按下回车键,会在窗口显示选择好的安装路径和配置文件路径,具体如图所示。2.安装Redis配置文件路径7.3.1下载与安装Redis步骤5步骤6Redis服务启动成功按回车键继续启动Redis服务,此时会在命令行窗口显示一些提示信息,提示完成后显示Redis服务创建和启动成功,具体如图所示。2.安装Redis步骤77.3.1下载与安装Redis步骤5步骤6查找Redis服务按下Windows+R组合键打开运行窗口,在该窗口中输入services.msc命令,单击确定按钮打开服务窗口,在服务窗口的服务列表中查找Redis服务,具体如图所示。2.安装RedisRedis服务的状态为正在运行,启动类型为自动,说明Redis服务已经成功注册,并且无需手动干预即可随系统启动自动运行。步骤77.3.1下载与安装Redis步骤5步骤6测试Redis数据库连接若需要验证数据库连接,可以打开命令行窗口输入“redis-cli”命令启动Redis客户端,当提示符变为:6379>时继续输入“ping”命令进行测试连接。如果收到响应PONG,则说明客户端已经成功连接数据库。命令及运行结果如下所示:2.安装Redis步骤7C:\Users\itcast>redis-cli:6379>pingPONG掌握Python操作Redis的方式,能够使用redis模块操作Redis数据库学习目标7.3.2使用Python操作Redis安装Redis数据库后,开发者可通过Python的第三方库redis实现高效的数据交互。redis库不仅完整支持字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Zset)等核心数据结构的操作,还提供管道事务、发布订阅消息等高级功能。通过内置连接池管理、灵活的连接参数配置以及自动序列化机制,redis库能显著提升程序性能并简化开发流程,是Python中操作Redis数据库的标准解决方案。7.3.2使用Python操作Redis使用redis库之前,需要在当前的Python环境中安装redis库。redis库的安装命令如下。pipinstallredis==6.2.0当命令提示符窗口中输出如下信息时,说明redis库安装成功。7.3.2使用Python操作Redis……Installingcollectedpackages:redisSuccessfullyinstalledredis-6.2.0安装好redis库以后,就可以使用redis库操作Redis数据库了。在Redis数据库中,数据都是以键值对的形式进行存储的,其中键必须为字符串类型,值可以为字符串、哈希、列表、集合、有序集合5种类型。接下来,分别从创建连接、增加键值对、查询键值对、修改键值对、删除键值对这几个方面介绍redis库的基本操作。7.3.2使用Python操作Redis在对Redis数据库的键值对操作之前,我们需要先与本地的Redis数据库建立连接。在redis库中,StrictRedis类的对象用于建立与Redis数据库的连接,它可以通过如下构造方法进行创建。StrictRedis(host='localhost',port=6379,db=0,password=None,socket_timeout=None,socket_connect_timeout=None,socket_keepalive=None,socket_keepalive_options=None,connection_pool=None,unix_socket_path=None,encoding='utf-8',decode_responses=False,...)host:表示待连接的Redis数据库所在主机的IP地址,默认设为localhost。port:表示Redis数据库程序的端口,默认值为6379。db:表示数据库索引,默认值为0,最大值为15,对应数据库的名称为db0和db15。encoding:表示采用的编码格式,默认值为utf-8。decode_responses:表示是否对返回的结果进行解码,默认值为False。7.3.2使用Python操作Redis1.创建连接例如使用默认IP地址和端口号创建StrictRedis类的对象,建立与本地Redis数据库的连接,具体代码如下。importredissr_obj=redis.StrictRedis()7.3.2使用Python操作Redis1.创建连接添加键值对的常用方法有两个:set()和append()。set()方法用于根据指定的键设置值,若指定的键不存在,则会新建一个键值对,否则会修改该键对应的值。set()方法会返回一个布尔值,若返回的值为True,则表示键值对创建或修改成功;若返回的值为False,则表示创建或修改失败。append()方法用于为指定的键追加值,若指定的键存在,则新值会追加到原值的末尾,否则会创建一个新的键值对。7.3.2使用Python操作Redis2.添加键值对使用set()方法向默认的数据库db0中增加键值对,具体代码如下。#增加键值对result=sr_obj.set('py1','书中自有颜如玉,书中自有黄金屋。')print(result)7.3.2使用Python操作Redis2.添加键值对get()方法用于根据指定的键查询该键对应的值,查询失败则会返回None。例如,使用get()方法查询刚刚添加的键值对。#查询键为py1的值result=sr_obj.get('py1')print(result)#使用utf-8将二进制数据解码为字符串print(result.decode('utf-8'))7.3.2使用Python操作Redis3.查询键值对使用set()方法可以对Redis数据库已经存在的键值对进行修改。例如,使用set()方法将键py1对应的值修改为HelloWorld,并再次查询修改后的键值对。#修改键py1对应的值result=sr_obj.set('py1','Jerry')print(result)result=sr_obj.get('py1')print(result)7.3.2使用Python操作Redis4.修改键值对delete()方法会根据指定键删除其对应的值,并根据该方法返回的结果判定是否删除成功。若返回的结果为受影响键的数量,则表示删除成功;若返回的结果为0,则表示删除失败。#删除键py1的值result=sr_obj.delete('py1')print(result)7.3.2使用Python操作Redis5.删除键值对熟悉Redis桌面管理工具的使用,能够通过RedisInsight查看Redis中数据学习目标7.3.3Redis桌面管理工具为了更直观地监控和管理Redis数据库中的数据变化,推荐使用Redis官方推出的RedisInsight桌面管理工具。这款跨平台工具支持Windows、macOS和Linux系统,提供可视化键值浏览、实时数据监控、内存分析等专业功能,通过简洁直观的界面让开发者能够快速查看和操作Redis中的各类数据结构,大幅提升开发和调试效率。作为官方维护的工具,RedisInsight不仅兼容单机、集群等多种部署模式,是管理Redis数据库的首选解决方案。7.3.3Redis桌面管理工具下面以Windows10操作系统为例,演示如何在计算机上安装与配置RedisInsight2.70.0工具,具体步骤如下。7.3.3Redis桌面管理工具7.3.3Redis桌面管理工具步骤1步骤2步骤3步骤4进入RedisInsight的主界面双击RedisInsight安装包,按照安装向导的提示逐步进行安装,安装完成后进入RedisInsight的主界面,接受服务端公共许可证条款,具体如图所示。7.3.3Redis桌面管理工具步骤2步骤1步骤3步骤4添加数据库单击“AddRedisdatabase”按钮,添加Redis数据库连接,此时弹出添加数据库的对话框,具体如图所示。ConnectionURL选项用于配置Redis数据库的连接URL,其文本框中默认填写了redis://default@:6379,其中redis://表示使用Redis协议,default是系统预设的认证用户名,:6379分别指定了本地服务器的地址和Redis默认服务端口。如果需自定义连接参数,则可以单击文本框下方的“ConnectionSettings”按钮进行详细配置。7.3.3Redis桌面管理工具步骤3步骤1步骤2步骤4保持默认选项,单击“AddDatabase”按钮保存新连接信息后会跳转回主界面,并在该界面中可以看到增加的名为:6379的数据库,具体如图所示。完成添加数据库7.3.3Redis桌面管理工具步骤4步骤1步骤2步骤3数据库的详情界面单击数据库名称,即可跳转到该数据库的详情界面,该界面中默认展示的是db0数据库,当前数据库里面没有存储任何键值对,具体如图所示。7.3.3Redis桌面管理工具步骤5增加键值对后的详情界面为了检测是否能正常访问Redis服务,可以通过Redis服务的命令进行验证。在图所示界面下方单击“>_CLI”按钮,会在界面下方弹出命令行面板,在该面板中先使用set命令增加一个键为hello、值为world的键值对,再使用get命令查询键hello对应的值。执行完命令以后,单击界面右上方的刷新按钮,可以看到db0数据库增加了一个键值对,具体如图所示。实践项目:采集小兔鲜儿网的商品信息7.4掌握小兔鲜儿网站数据的抓取,能够将采集的数据保存到MongoDB中学习目标7.4采集小兔鲜儿网的商品信息小兔鲜儿网是一款由传智播客前端开发工程师打造的电商类的项目,它模仿其他商品交易平台的版块,汇聚了居家、美食、服饰、母婴、个护、严选、数码、运动等几个分类的商品。实践此项目旨在让读者体验到真实项目的开发过程。在本节中,运用前面所学的知识开发一个完整的网络爬虫项目,用于采集小兔鲜儿网上车载用品分类下所有的商品信息,并将这些商品信息保存到MongoDB数据库中。7.4采集小兔鲜儿网的商品信息项目需求在浏览器中访问小兔鲜儿网的首页(该页面中默认显示了多个版块)单击菜单栏中的“数码”选项进入数码分类的页面,在该页面中可以看到影音娱乐、乐器、车载用品、办公文具4个子分类,单击任意一个子分类就会进入该子分类对应的页面。例如,选择子分类车载用品,进入车载用品类的商品页面。7.4采集小兔鲜儿网的商品信息项目目标单击任意一个商品进入该商品的详情页面。7.4采集小兔鲜儿网的商品信息项目目标图中展示了茶杯的很多信息,其中标注出的信息由上至下分别是商品链接、商品名称、商品描述、商品价格、商品图片,这些商品信息都是我们要采集的数据。拖住竖向滚动条向下翻查,可以在商品详情页面中看到茶杯的商品详情版块。7.4采集小兔鲜儿网的商品信息项目目标商品详情版块展示了茶杯的详细信息,包括材质、产地、用途、容量等。这些详细信息也是我们要采集的数据。值得一提的是,由于商品所属的种类不同,所以它对应的商品详情也会有所不同。本项目的采集流程分为抓取网页数据、解析网页数据、存储数据共3个步骤,以下是每个步骤的具体实施思路。7.4采集小兔鲜儿网的商品信息项目分析1.抓取网页数据根据前面的项目目标可知,我们最终要采集的目标网页是商品详情页面。观察商品详情页中地址栏的URL地址可知,URL地址中除了/#/product/外,还包含一组数字1035005。如果想知道这组数字表示的含义,则需要先对商品图片所示的车载用品类的商品页面进行分析,具体如下。7.4采集小兔鲜儿网的商品信息项目分析1.抓取网页数据(1)在浏览器中访问车载用品类商品页面时,当滚动至页面底部看完已展示的部分商品后继续滚动,会发现底部又加载出一批新商品。此时查看页面源代码,会发现其中完全找不到任何商品相关数据,这是因为该页面的所有商品数据均通过AJAX技术动态加载,即数据并非随页面初始加载一次性呈现,而是在用户触发滚动操作时,由浏览器通过异步请求从服务器获取并渲染到页面上。因此,若要获取这些动态加载的商品数据,需重点分析页面加载数据时发送的AJAX请求。7.4采集小兔鲜儿网的商品信息项目分析1.抓取网页数据(2)打开浏览器的开发者窗口,在该窗口切换至网络面板,并将页面请求的筛选条件设置为XHR,只展示通过AJAX技术动态加载数据时发送的请求。在车载用品类的商品页面中,滑动至页面底部,直到开发者窗口中出现请求信息时停止滑动。此时的开发者窗口如图所示。7.4采集小兔鲜儿网的商品信息项目分析1.抓取网页数据选中开发者窗口中标注的temporary,会在窗口右侧弹出查看该请求的详细信息的界面。在该界面采用预览模式展示当前请求发送后返回的响应信息,如图所示。7.4采集小兔鲜儿网的商品信息项目分析服务器返回的结果result为JSON格式的数据。result对应的值是一个JSON对象,该对象包含了多个键值对,其中counts:348代表车载用品类的商品页面中总共有348个商品;page:2代表当前展示的是第2页商品信息;pageSize:20代表每页至多展示20个商品;pages:18代表总共有18页。另外,items的值是一个JSON数组。7.4采集小兔鲜儿网的商品信息项目分析1.抓取网页数据展开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论