Python爬虫教程

第一章: 初学乍练-Python快速入门

第二章: 初窥门径-从全局把握网络爬虫

第三章: 爬虫数据-网页与JSON

第四章: 爬虫核心-HTTP协议

第五章: 手到擒来-数据的抓包

第六章: 利刃出鞘-HTTP请求库

第七章: 尘埃落定-数据的解析

第八章: 逆向初探-JS逆向

第九章: 爬虫进阶-Selenium, 中间人拦截

第十章:斗转星移-常用的反爬策略及应对方法

首页 > Python爬虫教程 > 第四章: 爬虫核心-HTTP协议 > 4.1节: 爬虫与浏览器

4.1节: 爬虫与浏览器

薯条老师 2021-02-19 09:33:58 228956 1

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

4.1.1什么是网络协议?

人与人之间的协议很好理解,协议即为双方约定的,需共同遵守的一系列规则。譬如情侣恋爱时的若干协议:

(1) 不准与人暧昧,心里要想着对方

(2) 不可以贬低对方,要多为对方着想

(3) 可以吵架,但事后要互相检讨。且不论对错,男方得主动道歉

(4) 可以AA制,但大大方方的男生会更受人喜爱

计算机中的网络协议,也是协议,既然是协议,那么也同人的协议一样,系双方约定,需共同遵守。网络通信的过程是一个请求+响应的过程,数据请求方通过网络协议向数据提供方发起请求,数据提供方再通过网络协议向请求方进行数据的响应。在这一过程中,通常将数据请求方称为客户端,将数据提供方称为服务端。

2.1节的教程中介绍的HTTP协议,就是一种网络协议,该协议规定了请求的格式,请求的方法,响应的格式等。浏览器向HTTP服务器发起请求时,必须遵守HTTP协议,按照协议中的请求格式,请求方法等来发起请求。

4.1.2 爬虫与浏览器

爬虫之所以能爬取到网页内容,是因为遵守了HTTP协议,按照HTTP协议的请求规范向站点服务器发起请求,从这个角度来看,爬虫与浏览器都是HTTP客户端。浏览器的主要工作是"代为"用户向站点发起请求,然后对服务端响应的超文本数据进行解析和渲染,在这一过程中,浏览器会根据HTTP协议的规范,设置一个User Agent的请求头,以标识浏览器的身份。

普通用户需要借助浏览器来访问网页,对于站点服务器来说,浏览器的行为都是"合法"的,因为网站的主要目的是为普通用户提供内容服务。

爬虫与浏览器的一个重要区别在于,爬虫可以按照一定的规则自动地抓取数据。爬虫在频繁抓取的情况下,会给站点服务器带来很大负担。此外,站点服务器出于数据保护的目的,会建立一种反爬机制,最简单的策略就是通过HTTP协议中的User Agent字段来识别合法的HTTP客户端。

4.1.3 User-Agent

User Agent通常简称为UA,中文释义为用户代理,主要的作用是标识HTTP客户端的身份。比如浏览器是一种HTTP客户端,在向站点服务器发起请求时,会在UA中写入浏览器的类型和版本号。

市面上常用的浏览器有IE,Google,Firefox,同学们可以找网上的在线工具来查看当前浏览器所使用的UA。站点服务器可以通过UA来识别合法的HTTP客户端,以拒绝恶意爬虫的访问请求。这种反爬策略的缺点在于,服务器只是简单地根据UA的字段信息来进行识别,并不能真正有效地禁止爬虫的数据抓取。

2.1节的内容中有讲解到,并非所有爬虫都是恶意爬虫,比如搜索引擎的爬虫程序:网站需借助爬虫的帮助,将网页提交给搜索引擎。对于服务端的UA检测,爬虫可以很轻松地绕开这种反爬限制,在请求时直接加上浏览器的UA信息。

代码实例-使用requests模块设置爬虫的UA信息:

import requests

"""
(1) 字典类型变量headers,用来定义HTTP请求头,在请求头部添加UA信息
(2) headers中的键User-Agent,用来定义HTTP的User-Agent请求头
 
"""
 
headers = {
        # 设置爬虫的UA为谷歌浏览器的UA 
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
 
 
 
# 以下url并不存在,同学们在实际测试时,可以替换为待抓取的网页的url
url = "http://www.justtest.com"
 
response = requests.get(url, headers = headers

4.1.4 知识要点

(1) 人与人之间的协议很好理解,协议即为双方约定的,需共同遵守的一系列规则

(2) 计算机中的网络协议,也是协议,既然是协议,那么也同人的协议一样,系双方约定,需共同遵守

(3) HTTP协议,就是一种网络协议,该协议规定了请求的格式,请求的方法,响应的格式等。浏览器与爬虫向HTTP服务器发起请求时,必须遵守HTTP协议,按照协议中的请求格式,请求方法等来发起请求。

(4) User Agent通常简称为UA,其中文释义为用户代理,简称 UA,主要的作用是标识HTTP客户端的身份。比如浏览器是一种HTTP客户端,在向站点服务器发起请求时,会在UA中写入浏览器的类型和版本号。

4.1.5 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:


已有1位薯条发表了看法:

  • 访客

    访客  评论于 2022-05-06 10:43:26  回复

    4.1.3中的代码实例,是不是最后忘加了右括号?

欢迎 发表评论: