爬虫的基本原理

一.什么是爬虫

爬虫是请求网站并提取数据的自动化程序


二.爬虫的基本流程

  1. 发起请求
    通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
  2. 获取响应内容
    如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
  3. 解析内容
    得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以保存或做进一步的处理。
  4. 保存数据
    保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

三.Request和Response?

在这里插入图片描述

Ⅰ.请求与响应

  1. 浏览器发送消息给该网址所在的服务器,这个过程叫做HTTP Request。
  2. 服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做HTTP Response。
  3. 浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后展示。

Ⅱ.Request 包含什么信息

  1. Request Method
    主要有GET,POST两种类型,另外还有HEAD,PUT,DELETE,OPTIONS等。
    GET请求方式:GET请求参数都包含在URL中,可以通过url直接访问
    POST请求方式:POST请求部分信息包含在FORM DATA中,需要构建表单才可以访问
  2. 请求URL
    URL(uniform resource locator)全称统一资源定位符,如一个网页文档,一张图片,一个视频等都可以用URL唯一来确定。
  3. 请求头
    包含请求时的头部信息,如User-Agent,HOST,Cookies等信息。
  4. 请求体
    请求时额外携带的数据,如表单提交时的表单数据

Ⅲ.Response 包含什么信息

  1. 响应状态
    常见http响应状态码:
     1xx:指示信息--表示请求已接收,继续处理
     2xx:成功--表示请求已被成功接收、理解、接受
     3xx:重定向--信息不完整需要进一步补充
     4xx:客户端错误--请求有语法错误或请求无法实现
     5xx:服务器端错误--服务器未能实现合法的请求
    
    操作成功收到,分析,接受:
            200      交易成功
            201      提示知道新文件的URL
            202      接受和处理、但处理未完成
            203      返回信息不确定或不完整
            204      请求收到,但返回信息为空
            205      服务器完成了请求,用户代理必须复位当前已经浏览过的文件
            206      服务器已经完成了部分用户的GET请求
    
     重定向:
            300      请求的资源可在多处得到
            301      永久重定向,在Location响应首部的值仍为当前URL(隐式重定向)
            302      临时重定向,在Location响应首部的值仍为新的URL(显示重定向)
            303      建议客户端访问其他URL或访问方式
            304      Not Modified 请求的资源没有改变 可以继续使用缓存
            305      请求的资源必须从服务器指定的地址得到
            306      前一版本HTTP中使用的代码,现行版本中不再使用
            307      声明请求的资源临时性删除
    
     客户端错误:
            400      错误请求,如语法错误
            401      未授权
               HTTP 401.1    未授权,登录失败
               HTTP 401.2    未授权,服务器配置问题导致登录失败
               HTTP 401.3    ACL  禁止访问资源
               HTTP 401.4    未授权  授权被筛选器拒绝
               HTTP 401.5    未授权  ISAPI或CGI授权失败
            402      保留有效ChargeTo头响应
            403      禁止访问
               HTTP 403.1    禁止访问  禁止可执行访问
               HTTP 403.2    禁止访问  禁止读访问
               HTTP 403.3    禁止访问  禁止写访问
               HTTP 403.4    禁止访问  要求SSL
               HTTP 403.5    禁止访问  要求SSL 128
               HTTP 403.6    禁止访问  IP地址被拒绝
               HTTP 403.7    禁止访问  要求客户端证书
               HTTP 403.8    禁止访问  禁止站点访问
               HTTP 403.9    禁止访问  连接的用户过多
               HTTP 403.10   禁止访问  配置无效
               HTTP 403.11   禁止访问  密码更改
               HTTP 403.12   禁止访问  映射器拒绝访问
               HTTP 403.13   禁止访问  客户端证书已被吊销
               HTTP 403.15   禁止访问  客户端访问许可过多
               HTTP 403.16   禁止访问  客户端证书不可信或者无效
               HTTP 403.17   禁止访问  客户端证书已经到期或者尚未生效
            404       没有发现文件、查询或URL
            405       用户在Request-Line字段定义的方法不允许
            406       根据用户发送的Accept拖,请求资源不可访问
            407       类似401,用户必须首先在代理服务器上得到授权
            408       客户端没有在用户指定的饿时间内完成请求
            409       对当前资源状态,请求不能完成
            410       服务器上不再有此资源且无进一步的参考地址
            411       服务器拒绝用户定义的Content-Length属性请求   
            412       一个或多个请求头字段在当前请求中错误
            413       请求的资源大于服务器允许的大小
            414       请求的资源URL长于服务器允许的长度
            415       请求资源不支持请求项目格式
            416       请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,       请求也不包含If-Range请求头字段
            417       服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长
     服务器端错误: 
            500 - 内部服务器错误
               HTTP 500.100 - 内部服务器错误 
               HTTP 500-11 服务器关闭
               HTTP 500-12 应用程序重新启动
               HTTP 500-13 - 服务器太忙
               HTTP 500-14 - 应用程序无效
               HTTP 500-15 - 不允许请求 
            501 - 未实现
            502 - 网关错误
            503 - 服务不可用
            504 - 网关超时
     原文:https://blog.csdn.net/garfielder007/article/details/77984065
    
  2. 响应头 Response Headersxianging
    响应头包含了服务器对请求的应答信息。
    如内容类型,内容长度,服务器信息,设置Cookies等等。
  3. 响应体
    最主要的部分,包含了请求资源的内容,响应的正文数据都在响应体中。
    如网页HTML,图片二进制数据等。

四.能爬取哪些数据

  1. 网页文本
    如HTML,Json格式文本等。
  2. 图片
    获取到的是二进制文件,保存为图片格式
  3. 视频
    同为二进制文件,保存为视频格式
  4. 其他
    只要是能请求到的,都能获取

五.怎样解析数据

  1. 直接处理
  2. Json解析
  3. 正则表达式
  4. BeautifulSoup
  5. PyQuery
  6. XPath

六.为什么爬取数据与浏览数据不一致

在后台响应会出现很多JS文件,如下图所示。
实际浏览时看到的页面是经过JS文件修改渲染后的页面,而爬虫爬取到的页面是最初的未被修改过的页面,所以不一致。
在这里插入图片描述


七.如何解决JavaScript渲染的问题

  1. 分析Ajax请求
  2. Selenium/WebDriver — 模拟浏览器访问
  3. Splash — 模拟JavaScript渲染

八.如何存储数据

  1. 文本
    纯文本,Xml,Json等
  2. 关系型数据库
    如MySQL,Oracle,SQL Server等具有结构化表结构形式存储。
  3. 非关系型数据库
    如MongoDB,Redis等 Key-Value形式存储。
  4. 二进制文件
    如图片,视频,音频等等直接保存成特定格式即可。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值