我的爬虫学习之旅 (一) 初识爬虫

本文记录了作者在学习爬虫过程中的心得与经验,包括爬虫基本概念、开发环境搭建、网页请求原理及常见协议,同时介绍了请求与响应过程、URL组成、HTTP与HTTPS区别以及状态码含义。

  • 写在前面

此系列文章是记录本人在学习爬虫过程中的“心路历程”,由于之前的学习没有好好的做总结,导致在一段时间后对之前所掌握的内容变得生疏。所以这次决心开始好好记录学习过程中的知识内容,以便于日后重温。

本人的爬虫学习主要是参考崔庆才老师的爬虫系列课程。崔老师的课程讲解非常详细,在B站上也有配套的视频教程(建议大家自行搜索)。我推荐在学习过程中,应该及时记录崔老师课程中的相关知识点。因为在学习爬虫的路途上会接触到很多方法,库以及其它内容,并且针对不同网站内容的爬取方式也是迥然不同。另外我还会参考一些其它博主的优秀文章,从中获取灵感,丰富自己的知识面和技能。

在这里贴出崔老师的博客链接:https://cuiqingcai.com/4320.html


一、 关于爬虫

什么是爬虫?根据百度百科的介绍,网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

通俗来讲,爬虫就是用户通过程序来获取网页上所需要的资源内容(文字,图片...),并且保存到本地中,而这个程序说白了便是一个模拟浏览器请求网站获取数据的过程

爬虫的应用领域:搜索引擎数据分析研究购物助手等...

对爬虫的简单分类可以分为通用爬虫聚集爬虫

前者从一些种子扩展到整个web领域,将网页内容全部爬取下来,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。

而后者则是事先预定义所爬取的页面资源,通俗的来说就是有目的地对网页资源进行爬取。

然鹅,事情并没有这样简单。既然拥有爬虫技术,那便就有相应的反爬虫措施。在学习爬虫的过程中,针对不同领域的目标资源,都会遇到层层障碍,这需要我们花费大量的功夫去解析目标站点的源网页代码,从中找到解决方案并完成需求。

 

二、开发环境

本人使用的Python版本为Anaconda集成下的3.7.1,IDE使用Pycharm2017专业版,运行系统为Windows。


三、基础知识

既然要学习爬虫,那么我们就需要对网页请求原理有一个基础的认识。

 

① http与https协议:

hhtp: 大名鼎鼎的超文本传输协议,是因特网上应用最为广泛的一种网络传输协议,基于TCP/IP协议来传输以及获取数据,默认端口号为80

https: 超文本传输安全协议,可以理解成为加密的http协议。在http协议的基础上增加了SSL层,可以保障数据传输的安全性。

② 浏览器请求网页的过程:

  1. 浏览器向服务器发送一个request请求来获取Html文件,服务器接收到请求后做出响应,生成response文件对象然后再发送给浏览器。
  2. 浏览器分析Html文件,发现其中引用的其它内容,继续request请求这些内容
  3. 当前所需的请求全部下载成功后,浏览器会根据Html文件的语法结构进行显示。

PS:爬虫的基本过程:

  1. 发送request向目标站点请求数据,在请求中可以包含其它额外的信息(header)等,等待服务器响应。
  2. 若服务器正常响应,则会得到一个response内容,这个内容可能是Html,Json字符串等内容。
  3. 对得到的内容进行解析,针对不同类型用不同的方法。
  4. 将解析后的数据进行保存,保存方式可以是数据库或文本类型。

③ URL:

大名鼎鼎的统一资源定位符,是互联网上标准文件的地址,每一个互联网上的文件都对应着自己的URL。

浏览器会对URL的中文进行编码,采用% + 十六进制的方式。

组成结构:

  • protocol 协议,常用的协议是http
  • hostname 主机地址,可以是域名,也可以是IP地址
  • port 端口 http协议默认端口是:80端口,如果不写默认就是:80端口
  • path 路径 网络资源在服务器中的指定路径
  • parameter 参数 如果要向服务器传入参数,在这部分输入
  • query 查询字符串 如果需要从服务器那里查询内容,在这里编辑
  • fragment 片段 网页中可能会分为不同的片段,如果想访问网页后直接到达指定位置,可以在这部分设置

 ④ Request:

请求方式:

GET::向指定资源发出请求,有长度限制,并且只允许ASCII字符,参数会被放在URL中,所以是不安全的。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中。

POST:向指定资源提交数据,并且这个请求可能会修改或创建新的数据,无长度限制,参数不会被显示在URL中以及保存在历史日志中。

 其它方法:

HEAD与 GET 相同,但只返回 HTTP 报头,不返回文档主体。
PUT上传指定的 URI 表示。
DELETE删除指定资源。
OPTIONS返回服务器支持的 HTTP 方法。
CONNECT

把请求连接转换到透明的 TCP/IP 通道。

请求头部:

在网页的开发者模式中(F12)可以看到请求头相关的参数信息。

请求体(body):

当以POST方式进行请求响应时,用户提交的表单数据会被存放在body中。

⑤ 响应状态码:

200:请求正常。

301:永久重定向。

302:临时重定向(需要登陆)。

400:请求错误,URL语义有误或不正确。

403:服务器拒绝请求,权限不够。

404:Not Found,没找到请求文件。

500:服务器错误


五、其它

数据类型:对于爬取获得的数据,可能是Html文档类型,也可能是Json字符串类型,也有可能是二进制文件(图片,视频)。

Json:是一种文本格式。 JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

获取页面数据与浏览器不一致:很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的可能会不同。


参考:

https://www.cnblogs.com/zhaof/p/6897393.html

https://www.cnblogs.com/woodyblog/p/6005414.html

百度百科

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值