python爬虫学习之旅(一)


之前有学过爬虫,但是学习的不够深刻,认识也不到位,这次专门找了视频来进行学习

初识爬虫

什么是爬虫?

是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
简单的说就是,程序猿写程序,通过这个程序去互联网上抓取数据的过程

哪些语言可以实现爬虫?

(1)php,可以做,号称世界上最优美的语言,多进程、多线程支持的不好
(2)java,也可以做爬虫,人家做的很好,最主要的竞争对手,代码臃肿,重构成本大
(3)c、c++,是你能力的体现,不是良好的选择
(4)python,世界上最美丽的语言,语法简单、代码优美,学习成本低,支持的模块多,非常强大的框架 scrapy

通用爬虫、聚焦爬虫

通用爬虫

是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

使用方面:
(1)抓取网页
(2)采集数据
(3)数据处理
(4)提供检索服务

通用爬虫如何抓取新网站?
(1)主动提交url
(2)设置友情链接
(3)百度会和DNS服务商合作,抓取新网站

robots.txt
Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
假如不想让百度爬取某些页面或元素,就可以编写robots.txt,禁止百度爬去这些东西
这个协议是口头上的协议,自己写的爬虫程序不需要遵从

聚焦爬虫

是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
聚焦爬虫的思路?
代替浏览器上网。每个网页都是具有自己的特点:

  1. 网页都有自己唯一的url
  2. 网页内容都是html结构的
  3. 使用的都是http、https协议

环境配置

环境 :widows环境
编译器 : sublime
python版本 : python 3.7.1

HTTP和HTTPS协议

爬虫的基本原理是模拟浏览器进行 HTTP 请求,理解 HTTP 协议是写爬虫很重要的基础条件。
熟练的掌握爬虫技巧,一定要对http协议有很清的认识

什么是HTTP协议

浏览的每一个网页都是基于 HTTP 协议呈现的,HTTP 协议是互联网应用中,客户端(浏览器)与服务器之间进行数据通信的一种协议。协议中规定了客户端应该按照什么格式给服务器发送请求,同时也约定了服务端返回的响应结果应该是什么格式。

只要大家都按照协议规定方式发起请求和返回响应结果,任何人都可以基于HTTP协议实现自己的Web客户端(浏览器、爬虫)和Web服务器(Nginx、Apache等)。

HTTP 协议本身是非常简单的。它规定,只能由客户端主动发起请求,服务器接收请求处理后返回响应结果,同时 HTTP 是一种无状态的协议,协议本身不记录客户端的历史请求记录。
在这里插入图片描述

什么是HTTPS协议

HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
在这里插入图片描述

HTTP和HTTPS的区别

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

HTTP之请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
在这里插入图片描述

GET https://www.csdn.net/ HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Cookie:*************************
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.

GET说明请求类型为GET, https://www.csdn.net/ 为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息

从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等

第三部分:空行,请求头部后面的空行是必须的

即使第四部分的请求数据为空,也必须有空行。

第四部分:请求数据也叫主体,可以添加任意的其他数据。

这个例子的请求数据为空。

HTTP之响应消息Response

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
在这里插入图片描述

HTTP状态码

HTTP状态码分类

1** :信息,服务器收到请求,需要请求者继续执行操作
2** :成功,操作被成功接收并处理
3** :重定向,需要进一步的操作以完成请求
4** :客户端错误,请求包含语法错误或无法完成请求
5** :服务器错误,服务器在处理请求的过程中发生了错误

常见状态码:

常见状态码
200 OK客户端请求成功
400 Bad Request客户端请求有语法错误,不能被服务器所理解
401 Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden服务器收到请求,但是拒绝提供服务
404 Not Found请求资源不存在,eg:输入了错误的URL
500 Internal Server Error服务器发生不可预期的错误
503 Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

参考博文

http://www.cnblogs.com/ranyonsue/p/5984001.html
https://www.cnblogs.com/wqhwe/p/5407468.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值