1 http协议
1.1 简介
1.HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
2.HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
1.2 工作原理
-
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
-
Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。
-
Web服务器根据接收到的请求后,向客户端发送响应信息。
-
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:
-
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
-
HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
-
HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
-
以下图表展示了HTTP协议通信流程:
1.3 参数详解
关键字 | 说明 |
---|---|
Request URL | 请求的URL地址 |
Request Method | 请求方法 |
Status Code | 状态码 |
Remote Address | 远端地址 |
Connection | 连接类型 |
Content-Encoding | 数据压缩方式 常用压缩算法: Content-Encoding:gzip Content-Encoding:compress Content-Encoding:deflate Content-Encoding:identity Content-Encoding:br |
Content-Type | 互联网媒体类型 text/html HTML格式 text/plain: 文本格式 text/xml: XML格式 image/gif: gif图片格式 image/jpeg: jpg图片格式 image/png: png图片格式 application/xhtml+xml: XHTML格式 application/xml:XML数据格式 application/atom+xml Atom XML聚合格式 application/json JSON数据格式 application/pdf: pdf格式 application/msword: Word文档格式 application/octet-stream 二进制流数据(例如文件下载)application/x-www-form-urlencoded: 普通表单提交 multipart/form-data 表单文件上传 |
Accept | 发送端希望接受的数据类型 |
text() | 文本内容 |
User-Agent | Agent 用户代理 |
Accept-Encoding | 发送端支持的压缩算法 |
Cookie | Cookie |
Accept-Language | 发送端支持的语言 |
Cache-Control | 缓存机制 |
2 网络基础爬虫
2.1 简介
-
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
-
其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据
2.2 用途
可以抓取到 任何你想要抓取的内容,前提是你的浏览器访问得到,
2.3 本质
爬虫的本质就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。
浏览器打开网页的过程:
1、在浏览器的输入地址栏,输入想要访问的网址。
2、经过DNS服务器找到服务器主机,向服务器发送一个请求
3、服务器经过解析处理后返回给用户结果(包括html,js,css文件等等内容)
4、浏览器接收到结果,进行解释通过浏览器屏幕呈现给用户结果
上面我们说了爬虫的本质就是模拟浏览器自动向服务器发送请求,获取、处理并解析结果的自动化程序。
爬虫的关键点:模拟请求,解析处理,自动化。
2.4 基本流程
2.4.1 发起请求
通过HTTP库向目标站点发起请求(request),请求可以包含额外的header等信息,等待服务器响应
2.4.2获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型
2.4.3 解析内容
得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理
2.4.4 保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件
2.5 urllib
2.5.1简介
-
在Python2版本中,有urllib和urlib2两个库可以用来实现request的发送。
-
而在Python3中,已经不存在urllib2这个库了,统一为urllib。
-
Python3 urllib库官方链接:https://docs.python.org/3/library/urllib.html
-
常用模块:
-
urllib.request打开和浏览url中内容
-
urllib.parse解析url
-
2.5.2 urllib.request
2.5.2.1 简介
urllib.request 模块提供了最基本的构造 HTTP请求方法,可以模拟浏览器的一个请求发起过程。同时它还带有处理authenticaton(授权验证),redirections(重定向),cookies(浏览器Cookies)以及其它内容。