一、请求
由客户端向服务端发出,可以分为4部分。
请求方法、请求的网址、请求头、请求体
1.请求方法包含GET方法和POST方法。
GET方法传递的参数会包含在url中,大小不超过1024;POST主要用于登录。
其他请求方法如下图所示。
2.请求的网址 URL
3.请求头,包含重要信息。
Accept: 请求报头域,用于指定客户端可以接受哪些类型的信息。
Accept-Encoding: 指定客户端可接受的内容编码。
Accept-Language: 指定客户可接受的语言类型。
Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。
Cookie:也常用复数形式Cookies。用来标识用户
User-Agent:可以使服务器识别客户使用的操作系统及其版本、浏览器等信息。在做爬虫时,加上此信息,可以伪装为浏览器,如果不加,很可能被判为爬虫。
4.请求体
请求体一般承载的内容是POST请求中的表单数据,GET请求的请求体为空
二、响应
响应,由服务端返回给客户端,可以分为3部分:响应状态码、响应头、响应体。
1.响应状态码表示服务器的响应状态,如200代表服务器正常相应,404代表页面未找到,500代表服务器内部发生错误。
2.响应头包含了服务器对请求的应答信息,如Content-Type,
Date:标识响应产生的时间
Server:包含服务器的信息,比如名称、版本号。
3响应体是最重要的内容。
三、爬虫基本原理
主要包含获取网页、提取信息、保存数据、自动化程序几个步骤。
JavaScript渲染页面:
现在网页越来越多地采用 Ajax 、前端模块化工具来构建,整个网页可能都是由 JavaScript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳。有时候在用urllib和 requests抓取网页时,我们得到的只是这个 HTML 代码,它不会帮助我们去继续加载这个 JavaScript 文件,这样也就看不到浏览器中的内容了。
因此,使用基本 HTTP 请求库得到的源代码可能跟浏览器中的页面源代码不太一样 对于这样的情况,我们可以分析其后台 Ajax 接口,也可使用 Selenium、Splash这样的库来实现模拟 JavaScript 渲染。