【归纳】爬虫基础知识

HTTP基本原理

  • URL:网址,用于唯一定位并访问网络资源
  • 超文本:文本+标签,HTML就是典型的超文本
  • HTTP:超文本传输协议,HTTPS是HTTP的安全版
  • HTTP请求过程:
    • 在开发者模式下访问任意网址(如www.baidu.com),即可看到HTTP交互过程
    • 完整的客户端请求包含请求方法、请求头和请求体
    • 常见的请求方法:GET, POST
  • 请求头(Request Headers)中的重要信息(当然还有很多其他内容,具体百度):
    • Cookie:标识了用户的会话信息,服务器通过Cookie来识别用户及其状态信息
    • Referer:标识这个请求是从哪个页面发来的,服务器可通过该信息进行来源统计及防盗链处理
    • User-Agent:简称UA,包含客户端的操作系统、浏览器等信息,爬虫访问时如果不伪装好UA,将很容易被服务器识别出来
  • 请求体:
    • POST的请求体为表单信息,GET的请求体为空
    • 爬虫如果要构造POST请求,需要在请求头中使用正确的Content-Type,具体见《实战》P84表2-2:Content-Type和POST提交数据方式的关系
  • 服务器的响应包含三个部分:响应状态码,响应头,响应体
    • 常见的响应状态码:200-正常响应,404-未找到页面,500-服务器内部错误,etc.
  • 响应体:包含服务器响应的正文内容,如HTML代码,图片的二进制数据等

网页基础

  • 网页的组成包括:HTML、CSS和JavaScript
    • HTML:定义网页的内容和结构
    • CSS:定义HTML元素的排版布局
    • JS:定义网页的动态交互行为
  • HTML中的元素被称为节点,HTML中的所有节点均可被JS访问、修改、创建及删除
  • CSS使用选择器来定位HTML节点
  • 另一种比较常用的选择器叫做XPath,它也是用来定位并访问HTML/XML节点信息的

爬虫的基本原理

  • 爬虫的三个基本动作:获取网页、提取信息和保存数据
    • 获取网页:可通过urllib、requests等Python库实现
    • 提取信息:最通用的方法是正则表达式,但其构造过程复杂且容易出错。一个比较可行的方法是使用Beautiful Soup、pyquery、lxml等库,通过网页节点属性、CSS选择器或XPath来提取网页信息
  • 现在的网页越来越多的采用JS进行构建,这时只抓HTML信息就没用了,我们需要分析其后台Ajax接口,或者用Selenium、Splash等库来实现模拟JS渲染
  • 动态网页:可以响应参数,产生变化的HTML代码

会话和Cookies:

  • 会话:位于服务端,保存用户的会话/状态信息
  • Cookies:初始由服务端提供,然后保存于客户端,在客户端请求资源时供服务端识别用户状态信息(就像一张身份证/通行证)
  • Cookies的内容具有固定的属性结构,具体请百度
  • 会话和Cookies均有一个“过期时间”

代理的基本原理

  • 通过代理服务器转发信息实现IP伪装
  • 代理服务器的匿名程度不同,匿名程度越低的代理服务器透露的信息越多(包括它自己的信息以及我们的信息),原封不动地转发数据包的代理服务器是匿名程度最高的
  • 一种比较有效的代理解决方案是ADSL拨号,拨一次号换一次IP,稳定性高
原文地址:https://www.cnblogs.com/lokvahkoor/p/10665486.html