HTTP基本原理

URL

URL(Uniform Resource Locator),即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置 和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联 网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置 以及浏览器应该怎么处理它

hypertext

超文本:hypertext,浏览器里面看到的网页就是超文本解析而成, 其网页源代码是一系列html代码,如img表示图片,p指定段落

HTTP基本原理

  • http和https:访问资源需要的协议类型,还有其他的类型,ftp, sftp,smb等

  • http:hyper text transfer protocol,超文本传输协议,网络传 输超文本数据到本地浏览器的传送协议,保证高效而准确的传送超 文本文档

  • https : Hyper Text Transfer Protocol over Secure Socket Layer,以安全为目标的http通道,http下加入ssl层

  • 作用:建立一个信息安全通道来保证数据传输的安全,确认网站的真实性

  • HTTP请求过程

    • 浏览器中输入url后,浏览器向网站所在服务器发送了一个请求,网 站服务器接收请求,并对这个请求进行处理和解析,然后返回对应 的响应,传回给浏览器,再通过浏览器解析出来
  • 请求:可分为四部分内容

    • 请求的网站(request url)
    • 请求方法(request method)
    • 请求头(request headers)
    • 请求体(request body)

请求方法主要分为get和post请求

  • get请求
    • 请求中的参数包含在url里面
    • 请求提交的数据最多只有1024字节
    • 百度中输入关键字,wd表示要搜索的关键字
  • post请求
    • 表单提交时候发起,用户登录
    • 数据以表单的形式传输,不会体现在url中
    • 请求提交的数据没有大小限制
    • 数据传输更安全(参数不会体现在url中)

请求头

用来说明服务器要使用的附加信息,比较重要的 信息有cookie,user-agent

请求体

一般承载的内容是post请求中的表单数据,对于 get请求,请求体为空

响应

由服务器返回给客户端,可以分为三部分,响应状 态 码 ( response status code ) , 响应头 ( response headers),响应体(response body)

响应状态码

表示服务器的响应状态,200代表服务器正常 响应,404代表页面未找到,500代表服务器内部发生错误

https://blog.csdn.net/q1056843325/article/details/53147180

响应头

包含了服务器对请求的应答信息,如contenttype,server,set-cookis等

响应体

爬虫请求后解析的内容就是响应体,响应的正文数据,比如请求网页时,响应体是html代码;请求一张图片时, 响应体为图片的二进制数据;json数据等

网页基础

网页的组成

  • HTML,CSS,JavaScript
  • Html相当于骨架,Css相当于皮肤,JavaScript相当于肌肉
  • 三者结合起来形成完善的网页

HTML:超文本标记语言(hyper text markup language)

HTML: 决定网页的结构和内容 (是什么),<head>元素标记头部文件,用<title>元素标记网页名称,用<body>元素标记网页主体,用<table>元素标记表格等等,段落用p标签表示,布局通过布局标签div嵌套组合合成

CSS:层叠样式表(cascading stytle sheets)

层叠指在html中引用了数个样式文件,并且样式发生冲突时候,浏览器能依据层叠顺序处理

样式:设定网页的表现样式(什么样子)。将网页样式提取出来方便更改某一类元素的样式,通过<style>元素插入CSS代码,<style>元素放在<head>元素中。网页中文字的大小,颜色,元素间距,排列等

JavaScript(JS)

  • Html和Css只是实现静态信息,缺乏交互性。网页的交互和动画效果 通过JavaScript实现
  • JavaScript通过单独的文件形式加载,后缀为js
  • Html中通过<script>标签引入

爬虫基本原理

爬虫基本流程

  • 获取网页源代码:通过请求库来实现,urllib,requests等实现 http请求
  • 提取信息:分析网页源代码,提取数据,如正则表达式,beautiful soup,pyquery,lxml等
  • 保存数据:保存为txt,json或数据库

抓什么数据

  • Html代码
  • Json字符串(api接口,手机端大部分是这种数据格式)
  • 二进制文件(图片,音频,视频等)
  • 各种扩展名的文件:css,JavaScript,各种配置文件等

JavaScript渲染页面

  • 用urllib或requests抓取网页时,得到的源代码和浏览器中看到的不一样
  • 越来越多的网页采用ajax、前端模块化工具来构建,整个网页都是 JavaScript渲染出来的
  • 需要分析ajax接口,或使用selenium等库实现模拟JavaScript渲染
  • 页面渲染/https://blog.csdn.net/zyf__java/article/details/73526682

cookies

  • cookies在浏览器端,在访问动态网页时候浏览器会自动附带上它发 送给服务器,服务器通过识别cookies并鉴定其是哪个用户,判断其 是否登录状态,然后返回对应的响应
  • cookies / https://baike.baidu.com/item/cookie/1119?fr=aladdin

爬虫代理

  • 代理网络用户去取得网络信息
  • 代理的作用:突破自身IP访问限制,访问团体内部资源,提高访问 速度,隐藏真实IP
  • 爬虫代理可以获得较好的爬取效果(防止被封禁或输入验证码登录)

检查robots.txt

  • Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬 虫排除标准”(Robots Exclusion Protocol),网站通过Robots协 议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取
  • 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是 否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内 容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够 访问网站上所有没有被口令保护的页面