爬虫基础
什么是爬虫
通俗的说:通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。
通用爬虫和聚焦爬虫
1.通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗等)的重要组成部分。主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。
2.聚焦爬虫:是面向特定需求的一种网络爬虫程序,他与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。
为什么用Python写爬虫程序:
1.PHP:PHP是世界是最好的语言,但他天生不是做这个的,而且对多线程、异步支持不是很好,并发处理能力弱。爬虫是工具性程序,对速度和效率要求比较高。
2.Java:生态圈很完善,是Python爬虫最大的竞争对手。但是Java语言本身很笨重,代码量很大。重构成本比较高,任何修改会导致代码大量改动。爬虫经常要修改采集代码。
3.C/C++:运行效率是无敌的。但是学习和开发成本高。写个小爬虫程序可能要大半天时间。
4.Python:语法优美、代码简洁、开发效率高、支持的模块多。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。
http/https协议简介
-
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。基于TCP的应用层协议,它不关心数据传输的细节。
HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,只有遵循统一的 HTTP 请求格式,服务器才能正确解析不同客户端发的请求,同样地,服务器遵循统一的响应格式,客户端才得以正确解析不同网站发过来的响应。
默认端口为80
-
HTTPS 的全称是Hyper Text Transfer Protocol over Secure Socket Layer ,是以安全为目标的HTTP通道,简单的讲是HTTP的安全版本,即HTTP下加入SSL层,简称HTTPS
其中HTTPS的安全基础为SSL,因此通过它的传输的内容都是经过SSL加密的,它的主要作用可以分为两种:
- 建立一个信息安全通道来保证数据传输的安全
- 确保网站的真实性,凡是使用了HTTPS 的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息。
默认端口为443
http协议常用的请求方法
在Http协议中,定义了八种请求方法。这里介绍两种常用的请求方法,分别是get和post
- get请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源常数任何影响的时候使用get请求
- post请求:向服务器发送数据、传送文件等,会对服务器资源产生影响时使用post请求
网站一般会遵循这个使用原则,但不排除有一些网站不按套路出牌。
http响应状态码
状态码类别
状态码格式 | 类别 | 原因 |
---|---|---|
1XX | Informational(信息性状态码) | 接收到的请求正在处理中 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
常见的状态码
- 200:请求正常,表示从客户端发来的请求在服务器端在正常处理了。
- 301:永久性重定向,该状态码表示请求的资源已经被分配了新的URI,以后应使用资源现在所指的
- 302:临时性重定向,该状态码表示请求的资源已经被分配了新的URI,希望用户(本次)能使用新的URI访问。和301类似,但是该状态码表示资源不是永久性被移动,只是暂时的。
- 400:请求错误,该状态码表示请求报文中存在语法错误,需要修改请求的内容后再次发送请求。或者是url错误
- 403:服务器拒绝访问,权限不够
- 404:请求失败,该状态码表示服务器上无法找到请求的资源。
- **500:**服务器内部错误,服务器在执行请求时发生了错误
爬虫常用的请求头参数
在http协议中,向服务器发送一个请求,数据分为三部分:
- 把数据放在url中
- 把数据放在body中(在post请求中)
- 把数据放在head中。这里介绍在网络爬虫中经常会用到的一些请求头参数
- User-Agent:浏览器名称。这个网络爬虫中经常会使用到。请求一个网顶的时候,服务器通过这个参效可以知道这个请求
是由哪种浏觉器发送的。如果我们是通过爬虫发送请求,那么我们的user-Agent就是Python,这对于那些有反爬虫机刹的网站来
说,可以轻易的判断你这个请求是爬虫。因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫。 - Referer:表明当前这个请求是从哪个url跳转过来的。这个一般也可以用来做反爬虫技术。如果不是从指定页面过来的,那么就不
做相关的响应。 - Cookie:http协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人。因此这
时就用cookie来做表示。一般如果想要做登陆后才能访问的网站,那么就需要发送cookie信息了。
- User-Agent:浏览器名称。这个网络爬虫中经常会使用到。请求一个网顶的时候,服务器通过这个参效可以知道这个请求
参考网址1:https://www.meiwen.com.cn/subject/ibwyrqtx.html
参考网址2:https://www.cnblogs.com/qican/p/11093132.html
参考网址3:https://blog.csdn.net/qq_39240270/article/details/89115489