我们学习知识就像盖房子一样,没有良好的地基,房子经不起风吹雨打。而如果房子的地基搭建的足够牢固,即使台风来了都是高高的耸立在那里。我们没有上来就讲爬虫怎么用,而是讲了一些基础的内容。这些内容大家都掌握了,后面我们学习实操爬虫就会很顺利,很清晰了。
HTTP协议
提到爬虫我们不得不提起HTT协议,那什么是HTTP协议呢?
HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
• 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
• 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
• 默认端口号:80
并且HTTP是一种无状态(stateless) 协议, HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。
有时我们还会使用到https协议,其实他是HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
• SSL对传输的内容(超文本,也就是请求体或响应体)进行加密
请求
HTTP协议中每次请求都会携带下方的内容,比如有请求的方法、请求的路径、协议的版本等我们称作请求行
还有符合字段名:值的这个方式的,我们称作请求头。
最后一部分是请求体。
大家来看一下,浏览器的开发者工具Network中的请求情况:
我们可以发现浏览器在发出请求的时候也是携带了请求行、请求头等内容。
爬虫中特别关注的请求头
无论是浏览器还是爬虫,在发出请求的时候要遵守HTTP协议,遵守HTTP协议就要携带请求头。
浏览器的请求头有哪些呢?同样在Network模式点击一个链接查看:
这么多请求头发出请求的时候都要加吗?不是的,因为每个网站的请求头也是不一样的,也不是统一的。所以爬虫特别关注以下几个请求头字段:
• Content-Type
• Host (主机和端口号)
• Connection (链接类型)
• Upgrade-Insecure-Requests (升级为HTTPS请求)
• User-Agent (浏览器名称)
• Referer (页面跳转处)
• Cookie (Cookie)
• Authorization(用于表示HTTP协议中需要认证资源的认证信息,如前边web课程中用于jwt认证)
加粗的请求头为常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别
响应
有请求再加上响应才是一个完整的HTTP协议过程。那返回的响应内容格式又是什么呢?
所以每一次响应都会包含上图中的内容,状态码、协议版本、响应头、响应实体等。
同样为了我们更加直观的来看响应我们还是通过浏览器的Network来看。可以看到有状态码、远程主机IP、响应头等内容
还有一个主要内容是没有看到的,那就是响应体,需要点击一下Response,就会发现下面发生了变化,你所看到的就是响应体的内容。
所以浏览器在发出请求的时候,运行过程是:
http请求的过程
我们无论访问任何网站都是在浏览器的地址栏上输入域名的,比如:http://www.baidu.com. 因为域名好记啊!我们从来不会记的百度的IP地址。但是识别的过程有DNS域名解析服务器完成了,它能够根据你输入的域名找到匹配的IP地址,然后将IP地址告诉你。
浏览器在拿到域名对应的ip后,开始发起请求,并获取响应
在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应
浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应
从获取第一个响应并在浏览器中展示,直到最终获取全部响应,——这个过程叫做浏览器的渲染
那讲了这么多,到底HTTP跟我们即将要讲的爬虫有什么关系呢?请看下图:
http作用
这个是爬虫的步骤,而HTTP协议则是这个步骤中的一部分而且是最重要的一部分,即发送请求获取响应的那部分。
【说的明白些,就是【请求和响应】这段其实就是浏览器要干的活,我们通过写程序假装是浏览器在访问。】!!!上图红色框起来的那部分就是假装浏览器在做事情
下一次爬虫我们给大家介绍正则表达式,并且介绍正则表达式在爬虫中的使用。
更多关于“Python培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。