zoukankan      html  css  js  c++  java
  • 【爬虫】之 爬虫概述

    一、互联网简介  

      互联网是由网络设备(网线,路由器,交换机,防火墙等)和一台台计算机连接而成,像一张网。互联网的核心价值在于数据的共享/传递:数据是存放在一台台的计算机上的,将计算机互联到一起的目的就是为了能够方便彼此之间的数据共享/传递,否则你只能使用U盘去别人的电脑上拷贝数据了。爬虫的核心价值就是获取数据并且解析数据,保存本地。

    二、什么是爬虫

      爬虫是一种应用程序,用于从互联网中获取有价值的数据,从本质上来看,属于client客户端程序。我们所谓的上网便是由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程。

    此时用户获取网络数据的方式为:

      浏览器提交请求   -----  下载网页代码 ----- 解析/渲染成页面

    而使用爬虫程序需要做的事情便是:

      模拟浏览器发送请求 ----- 下载网页代码 ----- 只提取有用的数据 ----- 存放于数据库或者文件中

    爬虫的核心便是只提取网页代码中对我们有用的数据,最终保存得到有价值的数据。

    三、爬虫的基本流程

    #1、发送请求
    发送请求之前还有一个分析请求:分析web页面得到发送请求必备数据。 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体 #2、获取响应内容 如果服务器能正常响应,则会得到一个Response Resonse包含:html代码,json,图片、视频等 #3、解析内容 解析html数据:正则表达式、第三方解析库如:Beautifulsoup,pyquery等 解析json数据:json模块 解析二进制数据:以二进制模式写进文件 #4、保存数据 保存在数据库、文件等方式。

    3.1HTTP请求分析

      首先要明确的是:爬虫的核心原理就是模拟浏览器发送HTTP协议来获取服务器上的书,那么想要服务器接受你的请求,则必须将自己的请求伪装的足够像,这就需要HTTP请求分析这一过程。其次,HTTP协议是基于请求响应模型的,客户端发送请求到服务器,服务器接受请求,处理后返回响应数据,需要关注的重点在于请求数据,只有服务器认为合格合法的请求才会得到服务器的响应。

    利用chrome开发者工具来分析请求

    chrome浏览器提供强大的开发者工具我们可以利用它来查看浏览器与服务器的整个通讯过程。

     请求流程分析

    1.请求地址

      浏览器发送的请求URL地址

    2.请求方法

      get中文需要URL编码,参数跟在地址后面,requests模块中的params参数后面跟上中文字体,会自动编码

      post参数放在body中

    3.请求头

     

    cookie,需要登录成功才能访问的页面就需要传递cookie,否则则不需要cookie

    user-agent,用户代理,验证客户端的类型

    referer,引用页面,判断是从哪个页面点击过来的

    4.请求体

     只在post请求时需要关注,通常post请求参数都放在请求体中,例如登录时的用户名和密码

    5.响应头

    location:重定向的目标地址,仅 在状态码为3XX时出现,需要考虑重定向时的方法,参数等。。,浏览器会自动重定向,request模块也会。

    set-cookie:服务器返回的cookie信息,在访问一些隐私页面是需要带上cookie

    6.响应体

    服务器返回的数据,可能以下几种类型

    HTML格式的静态页面 需要解析获取需要的数据

    json格式的结构化数据 直接就是纯粹的数据

    二进制数据(图片视频等) 通过文件操作直接写入文件

    三、总结爬虫

    3.1爬虫的定义

      向网站发送请求,获取资源后分析并提取有用的数据的程序。

    3.2爬虫的价值

      互联网中最有价值的便是数据,比如天猫商城的商品信息,链家网的租房信息,雪球网的证券投资信息等等,这些数据都代表了各个行业的真金白银,可以说,谁掌握了行业内的第一手数据,谁就成了整个行业的主宰,如果把整个互联网的数据比喻为一座宝藏,那我们的爬虫课程就是来教大家如何来高效地挖掘这些宝藏,掌握了爬虫技能,你就成了所有互联网信息公司幕后的老板,换言之,它们都在免费为你提供有价值的数据。

  • 相关阅读:
    printf输出函数
    死循环的3种编写方案
    volatile 和const 变量的使用
    arm mov 指令
    arm ldr 指令
    arm str 指令
    Ztree-
    端口占用问题:java.net.BindException: Address already in use: bind
    模块和包
    序列化模块:json、pickle、shelve
  • 原文地址:https://www.cnblogs.com/846617819qq/p/10685541.html
Copyright © 2011-2022 走看看