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


  • 写在前面

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

本人的爬虫学习主要是参考崔庆才老师的爬虫系列课程。崔老师的课程讲解非常详细,在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

百度百科

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值