当前位置: 首页 > news >正文

[腾讯云 Cloud studio 实战训练营] 制作Scrapy Demo爬取起点网月票榜小说数据

首语

最近接触到了一个关于云开发的IDE,什么意思呢?

就是我们通常开发不是在电脑上吗,既要下载编译器,还要下载合适的编辑器,有的时候甚至还需要配置开发环境,有些繁琐。

而这个云开发的IDE就是只需要一台能够上网的电脑就可以进行开发,完全不需要配置环境,下载编译器和编辑器。

Cloud Studio是什么

没错,这就是那一款云开发IDE。可以在浏览器上进行代码的编写,也可以将编写好的代码上传到你的Github或者Gitee。

Cloud Studio的优势

因为之前使用过JetBrains全家桶,所以就简单说一下对比,相较于传统的IDE来说,Clould Studio不需要下载安装即可在网页上使用。

相对来说更为方便,更为难得的是,Clould Studio在更为方便快捷的前提上,对比传统IDE的功能来讲,也都是具备的。

1. 代码纠错等基础功能

我们都知道,现在的IDE对于错误的代码不需要编译就可以标红提醒,因此Clould Studio也具备这样的功能,当然,代码补全这个很实用的功能也是具备的(对于我这种记忆力不好的人来说,这个功能还是很重要的)

2. 环境搭建

对于项目的环境搭建来说,由于Clould Studio收集了众多项目模板,因此对于需要的环境可以一键搭建,主打的就是一个方便快捷

也并不需要你创办虚拟环境,重新安装类库等,直接创建开发空间,就是一个独立的项目,不需要担心不同项目之间突然,冒出来一个问题。

也不需要为学校教了多门语言而苦恼多门语言的编译器安装与环境配置问题。

当时我学习java的时候确实为了环境配置而苦恼,只能说相见恨晚呐!

3. 链接云服务器

创建的项目运行后是在类似于云服务器上跑的,web项目也可以通过外网访问,工作空间内有分配的端口号和IP,也是非常的方便。

Clould Studio是使用ssh的方式来远程连接到,我们只需要在工作空间启动项目,然后就会出现这个按钮

在这里插入图片描述

点击后就会出现ssh的链接,使用对应的工具就可以远程链接了。

在这里插入图片描述

接下来我们就讲讲如何使用Clould Studio来制作我们的Scrapy Demo。

使用Clould Studio账号创建项目Demo

1. 注册创建Clould Studio账号

打开Clould Studio官方网站进行账号的注册登录:Clould Studio官网

在官网中我们可以看到对于Clould Studio的简单介绍:

在这里插入图片描述

而我们要使用的话就可以直接点击官网右上角的注册/登录按钮

登录完成后回来到我们的工作空间(有个人和团体的)

在这里插入图片描述

2. 了解基本功能和内容

进入工作空间后,我们可以在左边看到一些木块,拢共分为三大类

  1. 开发空间——我们可以在开发空间看到我们创建的项目

  2. 空间模板——在空间模板里面有许多模板可以使用,不关你是python,java,C,vue语言,都有模板可供使用

    在这里插入图片描述

  3. 应用推荐——这里面是各位大佬制作好的项目,如果对某个项目感兴趣,想观摩源代码,我们只需要点击之后,点击Fork按钮,就可以将大佬们的项目copy到我们自己的工作空间。

    在这里插入图片描述

3. 创建Python模板

我们在空间模板中找到Python模板,然后点击一下就可以快速创建了,当然这需要一定的时间,不过时间也不长

在这里插入图片描述

我们的工作空间窗户建好之后,我们会发现自动运行了一个Demo在这里插入图片描述

而在README文件中我们也可以看到关于这个Demo的相关介绍

在这里插入图片描述

当然我们不想运行的话也是可以直接删掉的。

4. 使用pip下载Scrapy库

虽然我使用pip list命令发现已经初始化了很多类库,比如flaskpygame等比较常用的,但是Scrapy是没有的,同样的,我也并没有发现Django库,我们使用的话,最好先查看一下有没有我们需要的类库。

先将我们不需要的文件删除掉,然后打开终端

在这里插入图片描述

之后再使用我们的pip工具下载我们需要的类库pip install Scrapy

下载完成后以防万一,我们再使用pip list命令检查一下是否安装成功

在这里插入图片描述

安装成功后我们就可以开始创建项目了

5. 创建Scrapy项目

创建Scrapy项目需要在终端输出命令创建,可别下载完就把终端×了啊

Scrapy startproject 项目名

出现下图内容就是创建成果了,同样的,我们还可以直接观察我们工作空间的目录,创建完成后会出现一个与项目名称同名的目录,那就是创建成果了

6. 创建爬虫文件

还是我们的终端,打开后切换到我们的项目目录下面,开始创建爬虫文件

cd 项目名称 // 切换到项目根目录
scrapy genspider qidian_spider www.xxx.com  // 创建名字为qidian_spider,域名为www.xxx.com的爬虫文件

在这里插入图片描述

显示这样就是我们的爬虫创建成果啦,当然爬虫开始工作还需要我们编写代码,现在还需要编写代码

先打开看看怎么个事

在这里插入图片描述

import scrapy  # 使用的类库class QidianSpiderSpider(scrapy.Spider):name = "qidian_spider" # 爬虫名allowed_domains = ["www.xxx.com"] # 通域名start_urls = ["https://www.xxx.com"]  #具体爬取的urldef parse(self, response):#爬虫代码编写在这里pass

7. 确认爬取目标

爬取起点中文网月票榜上小说,获取小说名,作者名,连载状态,小说简介

我们要爬取某个网站,首先一点就是先获取到网站的URL,所以网站的URL就是:https://www.qidian.com/rank/yuepiao/

所以我们的代码中就可以修改url了

start_urls = ["https://www.xxx.com"]

修改为start_urls = ["https://www.qidian.com/rank/yuepiao/"]

8. 修改项目配置

在没学Scrapy之前,我们都需要在确认网站url后填写headers头部信息,比如user_agentcookies,那么在Scrapy中我们也需要填写这种头部信息

找到项目内的setting.py文件打开

.在这里插入图片描述

将里面的内容修改加添加一些

将20行的ROBOTSTXT_OBEY = True改为ROBOTSTXT_OBEY = False

这个的意思是是否遵循机器人协议,默认是true,需要改为false

不然我们的爬虫有很多都无法爬取

添加代码:USER_AGENT:"你自己浏览器的请求头"

9. 编写爬取代码

import scrapyclass MonthlytickrtSpider(scrapy.Spider):name = "qidian_spider"allowed_domains = ["www.qidian.com"]start_urls = ["https://www.qidian.com/rank/yuepiao/"]def parse(self, response):print("===============项目开始运行===============")       yuepiao_list = response.xpath('//div[@class="book-mid-info"]')                # 月票榜小说数据列表data_list = []                                                                # 创建空列表容纳每一本小说的数据"""data_dic = {也可以创建一个字典来存储}"""                                                  for i in yuepiao_list:book_name = i.xpath('h2/a/text()').extract()[0]                           # 小说名book_author = i.xpath('p[1]/a[1]/text()').extract()[0]                    # 作者名book_intro = i.xpath('p[@class="intro"]/text()').extract()[0]             # 小说简介book_type = i.xpath('p[1]/a[2]/text()').extract()[0]                      # 小说更新状态book_src = i.xpath('h2/a/@href').extract()[0]                             # 小说链接book_data = {"小说名": book_name,"作者": book_author,"简介": book_intro,"更新状态": book_type,"链接": book_src,# 将取到每个小说的数据存入字典中}data_list.append(book_data)                                               # 将字典存入列表# data_list[name] = book_data                                             将字典存入字典,以小说名为键print(data_list)                                                              # 终端查看小说数据return data_list

好好好,代码已经写完了,那么我们来看看运行效果吧

在这里插入图片描述

可以看到我们的爬虫也是成功的爬取到了我们想要的数据,那么我们的数据如何保存下来呢?

有两种办法,一种是使用我们在Python基础学过的os模块,一种是Scrapy自带的数据保存方法

10. 数据保存

1. 使用Scrapy的方法保存

Scrapy给我们了四种保存数据的方式,分别是json, json line, xml, csv

不需要编写代码,只需要在运行项目的时候添加命令参数即可

scrapy crawl 项目名称 -o 文件名称.你想要的格式

比如我们现在使用json的格式储存,我们只需要

scrapy crawl qidian_spider -o data.json

这样我们就可以看到在根目录生成了一个json格式的data文件,我们点进去看看

在这里插入图片描述

好了,这就成功了

2. 使用os模块保存数据

我们可以使用python自带的os模块来对文件进行操作

在爬虫里面添加的代码如下

with open('data.txt','w') as f:f.write(str(data_list))

注意添加到函数下面,return上面

效果如图:

在这里插入图片描述

使用Git管理代码

1. 填写好项目的README文件

## 欢迎来到 Cloud Studio ##这是布小禅使用Clould Studio尝试编写的一个小小的爬虫Python项目。##  项目介绍爬取起点小说网月票榜榜单内小说,书荒的书虫有福音了哈使用Scrapy爬虫框架,当然也仅仅只是用了一点,属于是使用大炮打蚊子了## 运行项目常见的Scrapy运行,使用命令`srapy crawl 项目内模块名`。需要注意的是,你需要在运行项目之前切换到项目内,而不是Clould Studio的默认目录,那样你会运行失败的

2. 使用git将代码上传到Gitee

我们先打开终端,输入git init初始化代码仓库

然后

git add .
git commit -m "爬取起点月票榜数据"
git clone git remote add origin # 仓库链接
git push -u origin master       # 上传gitee

3. 项目完成销毁工作空间

先将工作空间关闭

在这里插入图片描述

退出之后回到工作空间,可以点击三个点删除

在这里插入图片描述

结语

相较于传统的IDE来说,Clould Studio更为的快捷和方便,不需要复杂的环境配置,不需要下载任何东西,只需要有一台能够连接互联网的电脑就可以进行开发工作了。

更为难能可贵的是,Clould Studio不仅仅没有因为快捷方便而舍弃了一部分功能,还在拥有大多数IDE功能的前提下增加了很多功能。比如新增的AI代码助手,模板一键搭建等都是很方便的。

以往除了vscode之外,我们想要一个全能的编辑器是很难,而Clould Studio就可以全能,什么语言它都兼容,而且写多个语言也不需要下载多个语言的编译器,就可以直接上手,为新手开发者和学生提供了很大的便利。

目前还没看到有缺点,是一款很优秀的软件,很适合入手。

相关文章:

[腾讯云 Cloud studio 实战训练营] 制作Scrapy Demo爬取起点网月票榜小说数据

首语 最近接触到了一个关于云开发的IDE,什么意思呢? 就是我们通常开发不是在电脑上吗,既要下载编译器,还要下载合适的编辑器,有的时候甚至还需要配置开发环境,有些繁琐。而这个云开发的IDE就是只需要一台…...

使用paddle进行酒店评论的情感分类5——batch准备

把原始语料中的每个句子通过截断和填充,转换成一个固定长度的句子,并将所有数据整理成mini-batch,用于训练模型,下面代码参照paddle官方 # 库文件导入 # encodingutf8 import re import random import requests import numpy as n…...

04-1_Qt 5.9 C++开发指南_常用界面设计组件_字符串QString

本章主要介绍Qt中的常用界面设计组件,因为更多的是涉及如何使用,因此会强调使用,也就是更多针对实例,而对于一些细节问题,需要参考《Qt5.9 c开发指南》进行学习。 文章目录 1. 字符串与普通转换、进制转换1.1 可视化U…...

Centos 从0搭建grafana和Prometheus 服务以及问题解决

下载 虚拟机下载 https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/17_0 cenos 镜像下载 https://www.centos.org/download/ grafana 服务下载 https://grafana.com/grafana/download/7.4.0?platformlinux …...

【代码解读】RRNet: A Hybrid Detector for Object Detection in Drone-captured Images

文章目录 1. train.py2. DistributedWrapper类2.1 init函数2.2 train函数2.3 dist_training_process函数 3. RRNetOperator类3.1 init函数3.1.1 make_dataloader函数 3.2 training_process函数3.2.1 criterion函数 4. RRNet类(网络模型类)4.1 init函数4.…...

python人工智能可以干什么,python人工智能能干什么

大家好,给大家分享一下python做人工智能需要什么水平,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 人工智能包含常用机器学习和深度学习两个很重要的模块,而python拥有matplotlib、Numpy、sklearn、keras等大量的…...

K8s工作原理

K8s title: Kubernetes之初探 subtitle: K8s的工作原理 date: 2018-09-18 18:26:37K8s概述 我清晰地记得曾经读到过的一篇博文,上面是这样写的, “云端教父AWS云端架构策略副总裁Adrian Cockcroft曾指出,两者虽然都是运用容器技术&#xff0…...

go错误集(持续更新)

1.提示以下报错 Build Error: go build -o c:\Users\Administrator\Desktop__debug_bin2343731882.exe -gcflags all-N -l . go: go.mod file not found in current directory or any parent directory; see ‘go help modules’ (exit status 1) 解决办法: go …...

【Docker】Docker中network的概要、常用命令、网络模式以及底层ip和容器映射变化的详细讲解

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...

arcgis栅格数据之最佳路径分析

1、打开arcmap,加载数据,需要对影像进行监督分类,如下: 这里任选一种监督分类的方法(最大似然法),如下: 这里会先生成一个.ecd文件,然后再利用.ecd文件对影像进行分类。如…...

docker服务器部署Django

Django是一个广泛使用的Python Web框架,而Docker是一个增强应用程序部署的流行容器平台。结合这两个技术,可以轻松地部署和维护Django应用程序。在本文中,我们将探讨如何使用Docker在服务器上部署Django应用程序。 1、安装Docker和Docker Co…...

SpringBoot集成百度人脸识别实现登陆注册功能Demo(二)

前言 上一篇SpringBoot集成百度人脸demo中我使用的是调用本机摄像头完成人脸注册,本次demo根据业务需求的不同我采用文件上传的方式实现人脸注册。 效果演示 首页 注册 后端响应数据: 登录 后端响应数据: 项目结构 后端代码实现 1、Bai…...

FPGA纯verilog实现 LZMA 数据压缩,提供工程源码和技术支持

目录 1、前言2、我这儿已有的FPGA压缩算法方案3、FPGA LZMA数据压缩功能和性能4、FPGA LZMA 数据压缩设计方案输入输出接口描述数据处理流程LZ检索器数据同步LZMA 压缩器 为输出LZMA压缩流添加文件头 5、vivado仿真6、福利:工程代码的获取 1、前言 说到FPGA的应用&…...

C++实现一个链栈

C实现一个链栈 什么是链栈如何实现链栈链栈的实现开发环境代码实现运行结果 什么是链栈 链栈不名思意,就是既具有链表的特性,又具有栈的特性。 即: 链栈中的元素由指针域和数据域组成,通过指针指向下一个元素;2.链栈同…...

Vue电商项目--VUE插件的使用及原理

图片懒加载 图片懒加载,就是图片延迟加载。只加载页面可视区域上的图片,等滚动到页面下面时,再加载对应视口上的图片 而在vue中有一个插件 vue-lazyload - npm (npmjs.com) npm i vue-lazyload 去使用他,这里我们引入了一张图片…...

2.部署kubernetes的组件

文章目录 部署kubernetes单master的K8S集群Linux初始化部署etcd证书环境etcd软件备份还原etcd 部署master组件部署apiserver部署controller-manager部署scheduler部署kubectl 部署node组件部署dockernode01节点node02节点部署kube-proxy K8S 二进制搭建总结 部署kubernetes 常见…...

后端开发4.Elasticsearch的搭建

使用docker安装 安装elasticsearch 拉取镜像 docker pull elasticsearch:7.17.0容器间建立通信,创建 elastic的网关 docker network create elastic 创建es容器【自启动】【虚拟机处理器数量至少两个】 docker run --restart=always -p 9200:9200 -p 9300:9300 -e "…...

嵌入式该往哪个方向发展?

1. 你所在的城市嵌入式Linux岗位多吗?我觉得这是影响你做决定的另一个大问题。我们学嵌入式Linux这门技术,绝大部分人是为了从事相关的工作,而不是陶冶情操。但是根据火哥统计来看,嵌入式Linux的普遍薪资虽然高于单片机&#xff0…...

非凸科技受邀参加中科大线上量化分享

7月30日,非凸科技受邀参加由中国科学技术大学管理学院学生会、超级量化共同组织的“打开量化私募的黑箱”线上活动,分享量化前沿以及求职经验,助力同学们拿到心仪的offer。 活动上,非凸科技量化策略负责人陆一洲从多个角度分享了如…...

Linux 命令之 - chown(改变文件拥有者及所属组)

基本语法: chown [-R] 账号名称 文件或目录 chown [-R] 账号名称:用户组名称 文件或目录 参数: -R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录 都更新成为这个用户组。常常用在更改某一目录的情况。 参考&…...

【基于openharmony的多路摄像头功能:USB设备插拔检测】

前言 最近项目接触的模块比较繁多而杂,因此开始写文章记录下用以总结。 目前在做的是基于openharmony3.2的多camera功能主要涉及HDF(HAL)层与framework层。 本文章涉及多路摄像头功能的第一步:支持USB摄像头插拔检测。 内容 目前openharmony在HDF层…...

uni-app:实现数字文本框,以及左右加减按钮

效果 代码 <template><view><view classline3><view classline3_position><view classleft>数量<text>*</text></view> <view class"right"><view class"quantity_btn"><view class"…...

跨平台开发框架Qt:面向对象、丰富API

Qt是一个跨平台C图形用户界面应用程序开发框架&#xff0c;它具有以下三大优势&#xff1a; 优良的跨平台特性&#xff1a;Qt支持多种操作系统&#xff0c;包括Windows、Linux、Solaris、HP-UX、Irix、FreeBSD等&#xff0c;使开发人员能够在不同平台上开发和部署应用程序&…...

An unexpected error has occurred. Conda has prepared the above report

今日在服务器上创建anaconda虚拟环境的时候&#xff0c;出现了如下报错 An unexpected error has occurred. Conda has prepared the above report 直接上解决方案 在终端中输入如下指令 conda config --show-sources 如果出现以下提示&#xff0c;说明多了一个文件 输入以下…...

考研C语言进阶题库——更新6-10题

目录 6输入一个字符串&#xff0c;输出其中字母的个数 7用递归求函数值x1,f(x)10,x>1.f(x)f(x-1)2 8所给字符串正序反序连接&#xff0c;形成新串并输出 9输入若干个整数以-1标记为结束输出其中的最大值 10求矩阵的两条对角线之和 6输入一个字符串&#xff0c;输出其中…...

汽车BOOTLOADER开发经历

鄙人参与电动汽车BOOTLOADER开发近三年&#xff0c;从完全没有这方面的基础到参与国内外大小知名或不知名车企的电动车三大件的BOOTLOADER开发&#xff0c;总结了以下一点学习心得。 1.熟悉基本术语含义 诊断、寻址方式、FBL、擦除、驱动 2.熟悉国际标准、UDS服务格式 汽车的…...

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中&#xff0c;由于应用环境的变化&#xff0c;常常需要将“一些现存的对象 ”放在新的环境中应用&#xff0c;但是新环境要求…...

HTTP连接之出现400 Bad Request分析

1、400简介 400是一种HTTP状态码&#xff0c;告诉客户端它发送了一条异常请求。400页面是当用户在打开网页时&#xff0c;返回给用户界面带有400提示符的页面。其含义是你访问的页面域名不存在或者请求错误。主要分为两种。 1、语义有误&#xff0c;当前请求无法被服务器理解…...

后端开发, 接口幂等性是什么意思

在后端开发中,接口的幂等性是指同一个请求的多次执行所产生的效果与执行一次的效果相同。简而言之,对于同一个接口请求,无论发送多少次,其对资源的状态修改结果都是一致的。 幂等性在接口设计和实现中非常重要,特别是在涉及数据修改或资源状态变更的情况下。如果一个接口…...

k8s手动发布镜像的方法

kubectl edit deploy编辑对应的文件&#xff0c;并:wq!保存即可...