【0基础】全网最细致【PYTHON入门】教学

news2024/11/25 23:22:38

前言

可以说很多人学编程,不玩点爬虫确实少了很多意思,不管是业余、接私活还是职业爬虫,爬虫世界确实挺精彩的。

今天来给大家浅谈一下爬虫,目的是让准备学爬虫或者刚开始起步的小伙伴们,对爬虫有一个更深更全的认知。

哪怕你没学过爬虫,看完这篇文章你也能明白爬虫的原理!

在这里插入图片描述


文章目录
    • 前言
    • 一、认识爬虫
      • 1.什么是爬虫?
      • 2.爬虫的分类
      • 3.Robots协议
    • 二、爬虫的基本流程
      • 1.爬虫的4步
      • 2.Request和Response
    • 三、了解Request
      • 1.请求方式
      • 2.请求URL
      • 3.请求头
      • 4.请求体
      • 5.实操查看Request
    • 四、了解Response
      • 1.响应状态
      • 2.响应头
      • 3.响应体
    • 五、爬虫能获取到什么样的数据?
    • 六、如何解析数据?
    • 七、怎么保存数据?
    • 结语

一、认识爬虫

1.什么是爬虫?

用一句话来给大家介绍大名鼎鼎的爬虫:请求网站并提取数据的自动化程序

通俗易懂一点讲,爬虫能干什么?它能帮你从网站上自动下载大量的文字、图片、视频、音频等等的数据,不用你一个一个地手动去操作。

2.爬虫的分类

根据使用场景,爬虫可以分为三类:

①通用爬虫(大而全)
功能强大,采集面广泛,通常用于搜索引擎,比如百度浏览器就是一个很大的爬虫程序。

②聚焦爬虫(小而精)
功能相对单一,只针对特定网站的特定内容进行爬取,比如说去某个网站批量获取某些数据,这也是我们个人最常用的一种爬虫了

③增量式爬虫(只采集更新后的内容)
这其实是聚焦爬虫的一个迭代爬虫,它只采集更新后的数据,对老数据是不采集,相当于一直存在并运行,只要有符合要求的数据更新了,就会自动爬取新的数据。

在这里插入图片描述


3.Robots协议

在爬虫中有一个叫Robots协议需要注意一下,又称为“网络爬虫排除标准”,它的作用就是网站告诉你哪些东西能爬,哪些不能爬。

这个Robots协议去哪看?一般情况下直接在网站首页网址后面加/robots.txt就能查看。

比如百度的Robots协议就在https://www.baidu.com/robots.txt ,可以看到里面有很多网址都规定了不能爬。

比如Disallow:/shifen/ 说明当前Disallow:/shifen以及Disallow:/shifen下面的子目录网页均不能爬。

在这里插入图片描述
其实这个Robots协议属于一个君子协议,对于爬虫者来说,基本上就是口头协议,你违反了它你有可能会被追究法律责任,但不违反它,爬虫将是爬不到什么数据,所以平时双方都是睁一只闭一眼,不要太嚣张就可以了。

在这里插入图片描述


二、爬虫的基本流程

1.爬虫的4步

爬虫是怎么干活的?爬虫程序大致上可以分为四步走:

①发起请求
通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。

②获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML、Json字符串和二进制数据(如图片视频)等类型。

③解析内容
得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

④保存数据
保存的数据样式很多,可以保存为文本,也可以保存至数据库,或者保存为特定格式的文件。

基本上这就是爬虫要遵循的四步了。


2.Request和Response

Request和Response是爬虫中最重要的一部分,Request和Response是什么关系?它们两的关系如下图:

在这里插入图片描述
简单理解一下:

当我们在电脑的浏览器上搜索某个东西的时候,比如前面的所说的在百度搜索“Python”,你点击百度一下,就已经向百度的服务器发送了一个Request请求,Request包含了很多的信息,比如身份信息、请求信息等等,服务器接收请求之后做判断,然后返回一个Response给我们的电脑,这其中也包含了很多信息,比如请求成功与否,比如我们请求的信息结果(文字、图片和视频等等)。

这样讲应该很好理解吧?接下来我们再好好去看一下Request和Response。


三、了解Request

Request包含了哪些东西?它主要包含了以下一些东西:

1.请求方式

请求方式可以理解为你跟网站打招呼的方式,你要从网站拿到数据,你就得用正确的方式去跟它打招呼,它才有可能理你。

就好比你要别人家借个东西,你得先敲门再说你好,你直接爬窗户进去这谁瞧见了都得给你撵出去。

在这里插入图片描述

主要的请求方式有GET和POST,另外还有HEAD/PUT/DELETE/OPTIONS等等其他方式,其中最常用的还是GET这种请求方式


2.请求URL

什么是URL?URL全称统一资源定位符,比如一个网页文档、图片、视频等等都有唯一的URL,在爬虫中我们可以理解为网址或者链接。


3.请求头

什么是请求头?英文名Request Headers,通常是指请求时包含的头部信息,比如User-Agent、Host、Cookies等等。

这些东西它相当于你向网站发送请求时你的身份信息,这里面经常需要伪装一下自己,伪装成普通用户,避免你的目标网站识别出来你是爬虫程序,规避一些反扒问题,顺利拿到数据。


4.请求体

官方一点的说辞就是请求时额外携带的数据,如表单提交时的表单数据。

怎么理解?就比如说你去你岳父家提亲,你不能空着手过去提亲对吧?你得带点东西才像个提亲的样子,你岳父才会把女儿许配给你,这是大家通用的礼数,少不了的。

在这里插入图片描述

在爬虫当中怎么理解?比如说在某些页面你得先登录了或者你得告诉我你请求什么,比如说你在百度这个网页中搜索“Python”,那么这个“Python”这个关键字就是你要携带的请求体,看到了你的请求体,百度才知道你要干什么。

当然了,请求体通常是用在POST这种请求方式里面,在GET请求时我们通常是拼接在URL里面,这里先理解一下就可以了,后续具体爬虫可以去加深理解。


5.实操查看Request

既然Request的理论我们已经讲过了,那么我们就可以去实操看一下Request具体在哪个位置以及包含哪些东西。

以谷歌浏览器Chrome为例,我输入关键字“Python”可以搜索出一堆结果,我们来用网页自带的控制台窗口来分析一下我们发出的Request请求。

按住F12或者在网页空白处右键选择“检查”,然后可以看到控制台里面有很多选择,比如说上面那一栏有一个菜单栏,初级爬虫一般我们就比较常用到的是Elements(元素)和Network(网络),其他的东西暂时用不到,等你学到了高级一点的爬虫就会用到了,比如JS逆向的时候可能会用到Application这个窗口,后面用到了再了解。

Elements包含了所有的请求结果的每一个元素,比如每一个图片的源代码都是有的,尤其是当你点了左上角的小箭头之后,你移动到的每一个地方在Elements窗口下都会显示对于的源代码。

在这里插入图片描述

Network就是爬虫常用到的网络信息,其中就有我们的Request,我们来看一下,在Network窗口下,勾选Disable cache(禁用缓存),并把All点上。

在这里插入图片描述

刷新一下网页看看效果,可以看出我们发出了132个Request请求,这个不用好奇,虽然我们只是向百度发出了“Python”这么一个请求,但有些是网页附带的请求。

在这里插入图片描述

虽然里面有很多类型,什么图片格式的png啊jpeg等等,但是你可以滑动到最上面,在Type(类型)那一列中有document这种类型,就是网页文档的意思,点击进去就有我们的Request信息。

在这里插入图片描述

点击document进去之后,又有一栏新的菜单栏,在Headers那一栏下面,我们可以看到 Request URL,也就是我们前面说的请求URL,这个URL才是我们真正向网页请求的URL,然后还有请求方式,可以看出来是GET请求这种方式。

在这里插入图片描述

往下再滑动一下,还可以看到我们前面讲的请求头 Request Headers ,信息很多,但我们前面讲的User-Agent、Host、Cookies都是有的,这些都是我们给服务器的信息。

在这里插入图片描述

Request Headers里面内容虽然多,我们在写爬虫程序的时候也是要在这方面做伪装工作,但并不是所有的信息我们都要写,选择性地写一些重要的信息就可以了,比如User-Agent必带,Referer和Host是选择性地带,cookie在要登录的情况下会带,常用的也就4项要做伪装。

至于请求体这里我就暂时不做查看了,因为我们这里的请求方式是GET请求,在POST请求中才能查看到请求体,没关系,爬虫用到了你自然就会明白的。


四、了解Response

Response主要包括3块内容,我们来一一了解一下。

1.响应状态

我们发送请求之后,网站会返回给我们一个Response,这其中就包括了响应状态码对于的响应状态,大致可以分为以下几种:

①200范围,比如响应状态码200则表示成功。

②300范围,比如301表示跳转。

③400范围,比如404找不到网页。

④500范围,比如502找不到网页。

对于爬虫来说,两三百则是我们最希望看到的响应状态,有可能会拿到数据,四五百基本上就凉了,拿不到数据的

比如我们刚在在前面的Request请求发送时,在document文件中,在Headers窗口下的General里面可以看出响应状态码是200,说明网页成功响应了我们的请求。

在这里插入图片描述


2.响应头

服务器给我们的信息里面也会有响应头这一部分,这里面包含了内容类型、内容长度、服务器信息和设置Cookie等等。

其实响应头对我们来说并不是那么重要,这里了解一下就可以了。


3.响应体

这个就很重要了,除了前面第一点的响应状态,就是它了,因为它包含了请求资源的内容,比如网页HTML和图片二进制数等等。

响应体在哪里呢?也是在document文件里面的Response那一栏,可以往下滑动就可以看出里面有很多响应的数据,这就是我们获取到的数据,有的是可以直接下载的,有的则是需要用技术去解析才能拿到。

在这里插入图片描述


五、爬虫能获取到什么样的数据?

爬虫能获取到什么样的数据?基本上可以分为这么几类:

①网页文档,如果HTML文档、Json格式文本等。

②图片,获取的是二进制文件,保存为图片格式即可。

③视频,也是二进制文件,保存为视频格式即可。

④其他的,反正其他能够看得见的东西,理论上都是可以用爬虫获取的,具体的话得看难度的大小。


六、如何解析数据?

从前面我们可以发送请求成功之后,网页会给我们返回很多的数据,有几千甚至几万条代码,那么如何在这么多的代码中找到我们想要的数据?常用的方法有以下几个:

①直接处理。当网页返回数据就是一些文本,就是我们想要的内容,不需要过滤处理,直接处理就可以。

②Json解析。如果网页返回的不是HTML数据是Json数据,那么就需要用到Json解析技术。

③正则表达式。如果返回的数据是符合正则表达式的数据,就可以用正则去做解析。

④其他解析方式。常用的有XPath、BeautifulSoup和PyQuery,这些都是爬虫常用的解析库。


七、怎么保存数据?

拿到数据后,常用的保存数据方法有以下几种:

①文本。可以直接保存为纯文本、EXCEL、Json、Xml等等类型的文本。

②关系型数据库。数据可以保存到关系型数据库,比如MySQL和Oracle等等数据库。

③非关系型数据库。如MongoDB、Readis和Key-Value形式储存。

④二进制文件。如图片、视频、音频等等直接保存为特定格式即可。

关于爬虫,今天就先讲到这里,欢迎在下方评论区留言交流


结语

爬虫是把双刃剑,用来“砍瓜切菜”还是“伤人性命”,全凭使用者一念之间,希望大家合理利用爬虫。

当然了,如果你技术很菜,你想做点出格的事都是不可能滴。

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:

在这里插入图片描述

今天的内容就分享到这里,如果你喜欢这篇文章的话,麻烦请动动你的手点个赞或者点个关注吧,这将是我最大的动力!谢谢,这里有我以前整理的大量自学资料 # 🐵需要的可以点这里自取👉:网安入门到进阶资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态壁纸软件Live Wallpaper HD mac中文版功能特色

Live Wallpaper HD mac提供了一系列美丽的主题场景,将为您的桌面增添活力。从城市景观、日落到遥远的星系,每个屏幕都有特别的触感,可以定制您的天气小部件和时钟样式,并使用您喜爱的图片创建您自己的个性化壁纸。 Living Wallpap…

使用 Rust 进行程序

首先,我们需要安装必要的库。在终端中运行以下命令来安装 scraper 和 reqwest 库: rust cargo install scraper reqwest 然后,我们可以开始编写程序。以下是一个基本的爬虫程序,用于爬取 上的图片: rust use reqwe…

QT实现的一个MVP设计模式demo

最近做qt 项目,发现网上基于MVP设计模式的QT例程很少,这里写一个demo示例可作为参考: 一、简要概述 MVP是由MVC发展而来,总体目的与作用相同。都是为了软件构架有层次之分,使得核心逻辑、界面控制、数据这三者分层清晰明了。减少…

椭圆滤波器

之前的文章 信号去噪 中列出了7种常用的信号去噪算法,对于后两种算法——深度学习和奇异值分解(SVD),我现在也不太理解,就先不写了。 很多朋友留言又提了一些算法,今天一起来聊聊椭圆滤波器。 椭圆滤波器(Elliptic F…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…

新大陆NVH200-AP(U)扫码枪在上位机软件开发中的应用

前言: 由于本次使用的是USB接口的扫码枪 1、先安装Nset软件,使用扫码枪扫描“启动设置条码”,然后扫描“USB CDC串口”条码 2、打开NSet软件,点击“刷新按钮” 就能找到扫码枪设备 3、设置条码后缀 点击“高级设置”,然后点击“数据编辑”,在“后缀”那里设置结束符…

〔001〕虚幻 UE5 安装教程

✨ 目录 🎈 下载启动程序🎈 注册个人账户🎈 选择引擎版本🎈 选择安装选项🎈 虚幻商城的使用🎈 每月免费插件🎈 安装插件🎈 下载启动程序 下载地址:https://www.unrealengine.com/zh-CN/download点击上面地址,下载 UE5 启动程序并安装🎈 注册个人账户 打开商…

发送Http请求的HttpClientUtil工具

发送Http请求的HttpClientUtil工具 代码如下: /*** author xuan* create 2023/11/6*/ public class HttpUtil {// 创建连接池管理器private static final PoolingHttpClientConnectionManager connMgr new PoolingHttpClientConnectionManager();// http客户端pr…

Java 求两个向量余弦相似度计算代码

Java 求两个向量余弦相似度计算代码 公式&#xff1a; 源码&#xff1a; public Double getCosineSimilarity( List<Double> x, List<Double> y ){double numerator 0D;for( int i 0; i < x.size(); i ){numerator x.get( i ) * y.get( i );}double leftD…

在 Python 中使用 Selenium 按文本查找元素

我们将通过示例介绍在Python中使用selenium通过文本查找元素的方法。 在 Python 中使用 Selenium 按文本查找元素 软件测试是检查应用程序是否满足用户需求的技术。 该技术有助于使应用程序成为无错误的应用程序。 软件测试可以手动完成&#xff0c;也可以通过某些软件完成。…

电脑怎么恢复删除的文件?恢复文件必备3个方法分享!

“由于我经常需要处理大量的文件&#xff0c;我在电脑里建了一个文件夹放比较重要的文件&#xff0c;但不知道由于我误操作还是什么原因&#xff0c;文件夹里的部分文件消失了&#xff0c;我现在很是烦恼&#xff0c;有什么方法可以帮我恢复删除的文件吗&#xff1f;” 处理电脑…

【Python】批量下载素材酷视频资源

【需求】 做视频精彩需要用到梗图视频等,但是素材酷上面的视频没有搜索功能,每次用起来还要去下载也很麻烦,下载只能一个一个下载也很麻烦,下要搞一个能够批量下载的功能,然后把下载的资源全部放进万兴喵影编辑器的云空间,这样就可以做到随做随查随用了。 【效果】 目…

第68讲:MySQL触发器的核心概念以及常见的触发类型应用案例

文章目录 1.触发器的概念2.触发器操作的语法结构3.各类触发器的典型应用案例3.1.需求描述以及实现思路3.2.创建日志表3.3.INSERT类型的触发器3.4.UPDATE类型的触发器3.5.DELETE类型的触发器 1.触发器的概念 触发器是与表中数据相关的数据库对象&#xff0c;当表中的数据产生in…

为什么江西的彩礼高?

作为一名江西土生土长的娃&#xff0c;今天和大家聊一聊江西的彩礼为何如此高&#xff1f; 江西的彩礼之所以高&#xff0c;主要与江西省的传统文化习俗、经济条件及社会观念等因素有关。那么我们从传统文化&#xff0c;经济条件&#xff0c;社会观念这三点出发。 1.传统文化习…

使用Kotlin与Unirest库抓取音频文件的技术实践

目录 摘要 一、Kotlin与Unirest库概述 二、使用Kotlin和Unirest抓取音频文件 1、添加Unirest依赖 2、发送HTTP请求获取音频文件 3、保存音频文件 三、完整代码示例 四、注意事项 结论 摘要 本文详细阐述了如何使用Kotlin编程语言与Unirest库抓取网络上的音频文件。首…

K8s:部署 CNI 网络组件+k8s 多master集群部署+负载均衡及Dashboard k8s仪表盘图像化展示管理

目录 1 部署 CNI 网络组件 1.1 部署 flannel 1.2 部署 Calico 1.3 部署 CoreDNS 2 负载均衡部署 3 部署 Dashboard 1 部署 CNI 网络组件 1.1 部署 flannel K8S 中 Pod 网络通信&#xff1a; ●Pod 内容器与容器之间的通信 在同一个 Pod 内的容器&#xff08;Pod 内的容…

深度学习中的数据类型介绍:FP32, FP16, TF32, BF16, Int16, Int8 ...

文章目录 0. 前言1. 数据的存储方式2. 不同数据类型介绍2.1 深度学习中常用的数据类型2.2 BF16 类型的优势2.3 不同数据类型的使用场景 0. 前言 相比于 CPU&#xff0c;GPU 在架构设计时将更多的晶体管用于数据处理&#xff0c;而不是数据缓存和流量控制&#xff0c;因此可以高…

【Python基础】Python函数介绍(超全面、缺省参数、多值传参、可变参数等)

函数进阶 1.01. 函数参数和返回值的作用1.1无参数&#xff0c;无返回值1.2 无参数&#xff0c;有返回值1.3 有参数&#xff0c;无返回值1.4 有参数&#xff0c;有返回值 2.不可变和可变的参数3.多值参数 1.01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值&…

Maven3.9.1安装及环境变量配置

一、Maven的下载与安装 maven各版本下载地址 打开链接后自行选择对应版本 下载完成后解压安装,最好别选择c盘,安装目录路径等使用英文,避免产生其他问题 我这里选择的是D盘 二、Maven的环境变量配置 2.1、右键点击此电脑选择属性&#xff0c;点击高级系统设置&#xff0c;点…

Coremail与国家信息安全漏洞库(CNNVD)达成深度合作!

漏洞信息共享合作单位证书 近日&#xff0c;Coremail获得由国家信息安全漏洞库&#xff08;CNNVD&#xff09;颁发的“CNNVD漏洞信息共享合作单位”证书。 此证书是国家权威机构对Coremail安全研究技术和漏洞挖掘技术实力的充分肯定&#xff0c;也是双方合作的里程碑。 国家信…