关于后端:打卡什么是云数据库沙箱实验如何用python和数据库来爬虫华为云至简致远

9次阅读

共计 11120 个字符,预计需要花费 28 分钟才能阅读完成。

【摘要】本文简略的介绍了什么是云数据库以及云数据库的实战简介:云数据库是指被优化或部署到一个虚构计算环境中的数据库,能够实现按需付费、按需扩大、高可用性以及存储整合等劣势。企业随同着业务的增长,成倍增长的数据须要更多的存储空间,此时,云数据库有助于应答许多这些数据库方面的挑战。让用户可能在云中轻松设置、操作和扩大关系数据库,并能够充沛联合私有云中的计算、网络与存储服务,从而以一种平安、可扩大、牢靠的形式,迅速抉择、配置和运行数据管理基础设施,使用户能专一于本身应用程序和业务。RDS 是关系型数据库 (Relational Database Service),一种基于云计算的可即开即用、稳固牢靠、弹性伸缩、便捷治理的在线关系型云数据库服  务。尽管客户能够在云服 务器上自建 MySQL,而其也会带有局部云个性:数据高可靠性保障、弹性扩大、根底运维等。但与在云服 务器自建数据库相比,RDS 为单位提供更多的自动化服 务,如:数据库主动备份、IP 白名单、具体的实时监控、容灾、读写拆散等,还防止了云服 务器带来的异样,如云服 务器 CPU 偶然会被 mysql 过程拉到 100%。华云数据 RDS 提供了容灾、备份、复原、监控、迁徙等方面的全套解决方案,反对将本地数据库迁徙到 RDS,平滑实现数据库的迁徙工作,彻底解决数据库运维的懊恼。云数据库的个性有:实例创立疾速、反对只读实例、故障主动切换、数据备份、Binlog 备份、拜访白名单、监控与音讯告诉。由此可知道两者的不同,拿华为云来比拟阐明:1. 在服务可用性方面和数据可靠性来说,华为云提供的云数据库 RDS 是 99.95% 可用的;而在自建数据库服务中,需自行保障, 自行搭建主从复制,自建 RAID 等。2. 华为云数据库 RDS 可防 DDoS 攻打,流量荡涤,能及时无效地修复各种数据库安全破绽;而在自购服务器搭建的传统数据库,则需自行部署,价格昂扬,同时也需自行修复数据库安全破绽。3. 华为云数据库 RDS 可主动为数据库进行备份,而自购服务器搭建的传统数据库需自行实现,同时须要寻找备份寄存空间以及定期验证备份是否可复原。4. 华为云数据库 RDS 无需运维,而传统数据库需招聘专职 DBA 来保护,破费大量人力老本。5. 华为云数据库 RDS 即时开明,疾速部署,弹性扩容,按需开明,而传统数据库需硬件洽购、机房托管、部署机器等工作,周期较长。6. 华为云数据库 RDS 按理论结算,100% 利用率,而自购服务器搭建的传统数据库需思考峰值,资源利用率很低。通过上述比拟能够看出,云数据库 RDS 产品是高性能、高平安、高牢靠、便宜易用的数据库服务零碎,并且能够无效地加重用户的运维压力,为用户带来安全可靠的全新体验。

赶上 618 还有新人特惠哦!https://activity.huaweicloud…. 试验:1:筹备环境 1.1 预置环境点击上方的预置环境按钮  约期待 3 分钟后语置胜利 

环境预置会生成资源:名称为“python-spider”的弹性云服务器 ECS、创立配置相干的 VPC、共享带宽,弹性公网 IP、平安组。1.2. 登录华为云进入【试验操作桌面】,关上 Chrome 浏览器,首次可主动登录并进入华为云控制台页面 

1.3. 创立云数据库 RDS 在已登录的华为云控制台,开展左侧菜单栏,点击“服务列表”->“数据库”->“云数据库 RDS”进入云数据库 RDS 控制台。点击“购买数据库实例”。计费模式:按需计费;② 区域:华北 - 北京四;③ 实例名称:自定义,如 rds-spider;④ 数据库引擎:MySQL;⑤ 数据库版本:5.7;⑥ 实例类型:单机;⑦ 存储类型:SSD 云盘;⑧ 可用区:可用区二;⑨ 时区:UTC+08:00;如下图所示:

性能规格:通用型,2 核 | 4GB;② 存储空间:40GB;③ 硬盘加密:不加密;④ 虚构公有云:抉择预置环境预置的虚构公有云;⑤ 内网平安组:抉择预置环境预置的内网平安组;⑥ 数据库端口:默认(3306);⑦ 设置明码:当初设置;⑧ 管理员明码:自定义,如 rIDM7g4nl5VxRUpI(请牢记设置的明码);⑨ 参数模板:默认;⑩ 购买数量:1;⑪ 只读实例:暂不购买;如下图所示:

 

点击“提交”实现购买 -> 点击“返回云数据库 RDS 列表”可查看到正在创立的云数据库 RDS,约期待【4- 6 分钟】数据库状态变为“失常”,阐明数据库创立实现,如下图所示 

1.4. 创立数据库及数据库表点击云数据库 RDS“rds-spider”进入详情页,在左侧导航栏,单击“连贯治理”->“公网地址”-> 单击“绑定”->“确定”。如下图所示:

弹性公网 IP 绑定实现,点击“登录”,输出用户名:root,明码:创立云数据库 RDS 时设置的明码,如下图所示:

点击“登录”进入数据库列表,而后点击“+ 新建数据库”,数据库名称为“vmall”,点击“确定”,实现数据库创立,如下图所示 

在新建的数据库右侧点击“新建表”,如下图所示:

进入数据库“vmall”的表治理页,点击“+ 新建表”,表名:“product”,其余参数默认,点击“下一步”如下图所示:

增加 3 个字段别离如下:①列名 id,类型 int,长度 11,勾选主键,扩大信息如下图(id 自增长);②列名 title,类型 varchar,长度 255,勾选可空;③列名 image,类型 varchar,长度 255,勾选可空。

设置实现点击“立刻创立”,弹出 SQL 预览页面,如下图所示:

点击“执行脚本”实现表创立。2. 查看目标网页并编写爬虫代码洞察目标网页在【试验操作桌面】浏览器新建 tab 页,输出华为商城地址并拜访:https://sale.vmall.com/huawei…,在关上的页面抉择一件商品关上商品详情页,如下图所示:

按“F12”查看网页元素,抉择“鼠标追随”按钮查看元素,而后点击网页中某个元素,能够看到源码界面显示了此元素对应的源码片段,从该源码片段中找到元素 class 或是 id 属性,如下图所示:

2.2 切换到【试验操作桌面】,关上“Xfce 终端”,顺次执行以下命令在桌面新建我的项目文件夹。命令如下:cd Desktopscrapy startproject vmall_spidercd vmall_spiderscrapy genspider -t crawl vmall “vmall.com” 执行胜利如下图所示:

启动“Pycharm”,启动胜利点击“File”->“Open”,抉择创立的我的项目“vmall_spider”如下图所示:

点击“OK”->“This Window”实现我的项目导入。2.3 编写爬虫代码在我的项目“vmall_spider”->“spiders”下,双击关上“vmall.py”文件,删除原有代码,写入以下代码:import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from vmall_spider.items import VmallSpiderItem class VamllSpider(CrawlSpider): name = ‘vamll’ allowed_domains = [‘vmall.com’] start_urls = [‘https://sale.vmall.com/huawei…’] rules = (Rule(LinkExtractor(allow=r’./product/.‘), callback=’parse_item’, follow=True), ) def parse_item(self, response): title=response.xpath(“//div[@class=’product-meta product-global’]/h1/text()”).get() price=response.xpath(“//div[@class=’product-price-info’]/span/text()”).get() image=response.xpath(“//a[@id=’product-img’]/img/@src”).get() item=VmallSpiderItem( title=title, image=image,) print(“=”30) print(title) print(image) print(“=”30) yield item 按“Ctrl+s”键保留,如下图所示:

双击关上“itmes.py”文件,删除原有代码,写入以下代码:# Define here the models for your scraped items## See documentation in:# https://docs.scrapy.org/en/la… import scrapy class VmallSpiderItem(scrapy.Item): title=scrapy.Field() image=scrapy.Field() 按“Ctrl+s”键保留,如下图所示:

双击关上“pipelines.py”文件,删除原有代码,写入以下代码(应用步骤 1.3 创立的云数据库 RDS 的明码、步骤 1.4 绑定的弹性公网 IP 替换代码中的相干信息)# Define your item pipelines here # # Don’t forget to add your pipeline to the ITEM_PIPELINES setting # See: https://docs.scrapy.org/en/la… # useful for handling different item types with a single interface import pymysql import os from urllib import request class VmallSpiderPipeline: def __init__(self): dbparams={‘host’:’124.70.15.164′, #云数据库弹性公网 IP ‘port’:3306, #云数据库端口 ‘user’:’root’, #云数据库用户 ‘password’:’rIDM7g4nl5VxRUpI’, #云数据库 RDS 明码 ‘database’:’vmall’, #数据库名称 ‘charset’:’utf8′} self.conn=pymysql.connect(**dbparams) self.cursor=self.conn.cursor() self._sql=None self.path=os.path.join(os.path.dirname(os.path.dirname(__file__)),’images’) if not os.path.exists(self.path): os.mkdir(self.path) def process_item(self,item,spider): url=item[‘image’] image_name=url.split(‘_’)[-1] print(“————————–image_name—————————–“) print(image_name) print(url) request.urlretrieve(url,os.path.join(self.path,image_name)) self.cursor.execute(self.sql,(item[‘title’], item[‘image’])) self.conn.commit() return item @property def sql(self): if not self._sql: self._sql=””” insert into product(id,title,image) values(null,%s,%s) “”” return self._sql return self._sql 替换信息如下图所示,而后按“Ctrl+s”键保留。

鼠标右键“vmall_spider”(目录第二层)点击“new”->“Python File”创立“start.py”文件,填入名称“start”,点击“OK”如下图所示:

写入以下代码。from scrapy import cmdline cmdline.execute(“scrapy crawl vamll”.split()) 按“Ctrl+s”键保留,如下图所示:

双击关上“settings.py”文件,删除原有代码,写入以下代码:# Scrapy settings for vmall_spider project # python-spider-rds # For simplicity, this file contains only settings considered important or # commonly used. You can find more settings consulting the documentation: # # https://docs.scrapy.org/en/la… # https://docs.scrapy.org/en/la… # https://docs.scrapy.org/en/la… import os BOT_NAME = ‘vmall_spider’ SPIDER_MODULES = [‘vmall_spider.spiders’] NEWSPIDER_MODULE = ‘vmall_spider.spiders’ # Crawl responsibly by identifying yourself (and your website) on the user-agent # USER_AGENT = ‘vmall_spider (+http://www.yourdomain.com)’ # Obey robots.txt rules # ROBOTSTXT_OBEY = True ROBOTSTXT_OBEY = False # Configure maximum concurrent requests performed by Scrapy (default: 16) # CONCURRENT_REQUESTS = 32 # Configure a delay for requests for the same website (default: 0) # See https://docs.scrapy.org/en/la… # See also autothrottle settings and docs DOWNLOAD_DELAY = 3 # The download delay setting will honor only one of: # CONCURRENT_REQUESTS_PER_DOMAIN = 16 # CONCURRENT_REQUESTS_PER_IP = 16 # Disable cookies (enabled by default) # COOKIES_ENABLED = False # Disable Telnet Console (enabled by default) # TELNETCONSOLE_ENABLED = False # Override the default request headers: # DEFAULT_REQUEST_HEADERS = {# ‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8′, # ‘Accept-Language’: ‘en’, # } DEFAULT_REQUEST_HEADERS = {‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8′, ‘Accept-Language’: ‘en’, ‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36’, ‘User-Agent’: ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11’, ‘User-Agent’: ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16’ } # Enable or disable spider middlewares # See https://docs.scrapy.org/en/la… # SPIDER_MIDDLEWARES = {# ‘vmall_spider.middlewares.VmallSpiderSpiderMiddleware’: 543, #} # Enable or disable downloader middlewares # See https://docs.scrapy.org/en/la… # DOWNLOADER_MIDDLEWARES = {# ‘vmall_spider.middlewares.SeleniumDownloadMiddleware’: 543, #} # Enable or disable extensions # See https://docs.scrapy.org/en/la… # EXTENSIONS = {# ‘scrapy.extensions.telnet.TelnetConsole’: None, #} # Configure item pipelines # See https://docs.scrapy.org/en/la… ITEM_PIPELINES = {‘vmall_spider.pipelines.VmallSpiderPipeline’: 300,} # Enable and configure the AutoThrottle extension (disabled by default) # See https://docs.scrapy.org/en/la… # AUTOTHROTTLE_ENABLED = True # The initial download delay #AUTOTHROTTLE_START_DELAY = 5 # The maximum download delay to be set in case of high latencies # AUTOTHROTTLE_MAX_DELAY = 60 # The average number of requests Scrapy should be sending in parallel to # each remote server # AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # Enable showing throttling stats for every response received: # AUTOTHROTTLE_DEBUG = False # Enable and configure HTTP caching (disabled by default) # See https://docs.scrapy.org/en/la… # HTTPCACHE_ENABLED = True # HTTPCACHE_EXPIRATION_SECS = 0 # HTTPCACHE_DIR = ‘httpcache’ # HTTPCACHE_IGNORE_HTTP_CODES = [] # HTTPCACHE_STORAGE = ‘scrapy.extensions.httpcache.FilesystemCacheStorage 按“Ctrl+s”键保留,局部代码截图如下图所示 

3. 在弹性云服务器 ECS 上运行爬虫程序安装所需依赖登录弹性云服务器 ECS:切换到【试验操作桌面】已关上的“Xfce 终端”,执行以下命令(应用弹性云服务器 ECS 的公网 IP 替换命令中的【EIP】),登录云服务器;ssh root@EIP 阐明: 在华为云控制点开展左侧菜单栏,点击“服务列表”->“计算”->“弹性云服务器 ECS”进入治理列表,可查看复制名称为“python-spider”的 ECS 服务器的弹性公网 IP。

承受秘钥输出“yes”,回车;输出明码:应用预置环境信息中云服务器名称为 python-spider 的用户明码(输出明码时,命令行窗口不会显示明码,输完之后间接键入回车)。登录胜利如下图所示:

顺次执行以下命令装置所需依赖。yum -y groupinstall “Development tools”yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 装置胜利如下图所示:

顺次执行以下命令装置依赖 yum install gcc libffi-devel python-devel openssl-devel -yyum install libxslt-devel - y 执行胜利如下图所示:

执行以下命令降级 pip。pip3 install -i https://pypi.tuna.tsinghua.ed… –upgrade pip 执行胜利如下图所示:

顺次执行以下命令装置 pip 依赖。pip3 install -i https://pypi.tuna.tsinghua.ed… scrapypip3 install -i https://pypi.tuna.tsinghua.ed… seleniumpip3 install -i https://pypi.tuna.tsinghua.ed… pymysqlpip3 install -i https://pypi.tuna.tsinghua.ed… pillow 执行胜利顺次如下图所示:

3.2 上传爬虫我的项目并运行执行以下命令退出弹性云服务器 ECS 登录状态。exit 退出如下图所示:

执行以下命令(应用弹性云服务器 ECS 的弹性公网 IP 替换命令中的 EIP)上传我的项目到弹性云服务器 ECS,提醒输出明码为:应用预置环境信息中云服务器名称为 python-spider 的用户明码 cd /home/user/Desktop && scp -r ./vmall_spider root@EIP:/root 实现上传操作,如下图所示:. 

仿照步骤 3.1 从新登录弹性云服务器 ECS,登录胜利后执行以下命令,可查看到上传的我的项目。Ls 如下图所示:

执行以下命令启动爬虫我的项目,运行片刻(约 30 秒),按“Ctrl+Z”键进行运行程序。cd /root/vmall_spider/vmall_spider/ && python3 start.py 运行胜利如下图所示:

查看爬取数据切换至【试验操作桌面】浏览器已登录云数据库 RDS 页面,点击“对象列表”->“关上表”如下图所示:

可看到已爬取的数据,如下图所示:

4. 存储爬取图片至对象存储服务 OBS 创建对象存储服务 OBS 切换至弹性云服务器列表页,开展左侧菜单栏,点击“服务列表”->“存储”->“对象存储服务 OBS”进入治理列表。点击“创立桶”填写参数如下:① 复制配置:不选,默认即可② 区域:华北 - 北京四③ 数据冗余贮存策略:单 AZ 存储④ 桶名称:任意填写,如 obs-spider⑤ 存储类别:规范存储⑥ 桶策略:公有⑦ 默认加密:敞开⑧ 归档数据直读:敞开⑨ 存储包超值购:不抉择其余参数默认,如下图所示 

  

点击“立刻创立”->“确定”实现对象存储服务 OBS 桶的创立,如下图所示:

4.2 装置对象存储服务 OBS 客户端在弹性云服务器 ECS 上装置对象存储服务 OBS 客户端。切换至已登录弹性云服务器 ECS 的命令行界面,执行以下命令下载“obsutil”工具。cd~&&wgethttps://sandbox-experiment-re… 下载胜利如下图所示:

执行以下命令解压“obsutil”工具。tar zvxf obsutil_linux_amd64.tar.gz 解压胜利如下图所示:

切换至试验浏览器华为云控制台页面,在右上角账号名下拉菜单中选择“我的凭证”->“拜访秘钥”,进入创立治理拜访密钥(AK/SK)的界面。地位如下图所示:

请删除原有的拜访密钥,再进行新密钥的创立。点击【新增拜访密钥】,在弹框中点击【确定】即可实现新增,而后点击“立刻下载”抉择“保留文件”->“确定”,将密钥保留至浏览器默认文件保留门路 /home/user/Downloads/,妥善保留零碎主动下载的“credentials.csv”文件中的 AK(Access Key Id)和 SK(Secret Access Key)以备前面操作应用。

AK 和 SK 查看形式:切换至【试验操作桌面】双击图标“Xfce 终端”新关上一个命令行界面,输出以下命令,切换到目录(/home/user/Downloads/)下。cd /home/user/Downloads/vi credentials.csv 内容如图所示:

切换到已登录弹性云服务器 ECS 的命令行界面,执行以下命令(应用上图所示 AK、SK 替换命令中的“your_ak”、“your_sk”),初始化“obsutil”。./obsutil_linux_amd64_5.2.5/obsutil config -i=your_ak -k=your_sk -e=https://obs.cn-north-4.myhuaw… 初始化胜利如下图所示:

执行以下命令查看“obsutil”连通性。./obsutil_linux_amd64_5.2.5/obsutil ls - s 连通失常如下图所示:

上传爬取图片至对象存储服务 OBS 并查看继续执行以下命令【应用创立的对象存储服务 OBS 的名称(如:obs-spider)替换命令中的“your_bucket_name”】,上传爬取到的图片。/root/obsutil_linux_amd64_5.2.5/obsutil cp /root/vmall_spider/images obs://your_bucket_name -f -r -vmd5 -flat - u 执行胜利如下图所示:

仿照 4.1 步骤找到创立的对象存储服务 OBS,点击名称关上详情页,点击左侧栏“对象”可看到上传保留的爬取图片,如下图所示:

任意点击图片名称进入详情,抉择“图片预览”可预览爬取的图片如下图所示:

最初:云数据库华为云从 2007 年部署至今曾经是取得了宽广的市场份额 也算是业界的扛把子了不论是从产品角度登程还是实战经验和客户体验都是很不错的抉择~【华为云至简致远】有奖征文炽热进行中:https://bbs.huaweicloud.com/b…【版权申明】本文为华为云社区用户原创内容,转载时必须标注文章的起源(华为云社区),文章链接,文章作者等根本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌剽窃的内容,欢送发送邮件至:cloudbbs@huaweicloud.com 进行举报,并提供相干证据,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0