爬虫原理

一. 爬虫是什么#

![](01 爬虫基本原理.assets/1036857-20171102182154154-1486674926.jpg)css

Copy
# 一、什么是互联网?
    互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机链接而成,像一张网同样。

# 二、互联网创建的目的?
    互联网的核心价值在于数据的共享/传递:数据是存放于一台台计算机上的,
    而将计算机互联到一块儿的目的就是为了可以方便彼此之间的数据共享/传递,不然你只能拿U盘去别人的计算机上拷贝数据了。

# 三、什么是上网?爬虫要作的是什么?
    咱们所谓的上网即是由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程。
    # 3.1 只不过,用户获取网络数据的方式是:
      浏览器提交请求->下载网页代码->解析/渲染成页面。
    # 3.2 而爬虫程序要作的就是:
      模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中
    # 3.1与3.2的区别在于:
      咱们的爬虫程序只提取网页代码中对咱们有用的数据

# 四、总结爬虫
    # 4.1 爬虫的比喻:
      若是咱们把互联网比做一张大的蜘蛛网,那一台计算机上的数据即是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,
      沿着蜘蛛网抓取本身想要的猎物/数据
    # 4.2 爬虫的定义:
        向网站发起请求,获取资源后分析并提取有用数据的程序
    # 4.3 爬虫的价值:
      互联网中最有价值的即是数据,好比天猫商城的商品信息,链家网的租房信息,雪球网的证券投资信息等等,这些数据都表明了各个行业的真金白银,
      能够说,谁掌握了行业内的第一手数据,谁就成了整个行业的主宰,若是把整个互联网的数据比喻为一座宝藏,那咱们的爬虫课程就是来教你们如何来高效地挖掘这些宝藏,
      掌握了爬虫技能,你就成了全部互联网信息公司幕后的老板,换言之,它们都在免费为你提供有价值的数据。

二. 爬虫的基本流程#

![](01 爬虫基本原理.assets/1036857-20171102174025326-341248106.png)html

Copy
# 一、发起请求
    使用http库向目标站点发起请求,即发送一个Request
    Request包含:请求头、请求体等

# 二、获取响应内容
    若是服务器能正常响应,则会获得一个Response
    Response包含:html,json,图片,视频等

# 三、解析内容
    解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等
    解析json数据:json模块
    解析二进制数据:以b的方式写入文件

# 四、保存数据
    数据库
    文件
    
# 5. 爬虫本质
   模拟浏览器发送请求(requests,selenium)-> 下载网页代码->只提取有用的数据(bs4,xpath,re)-> 存放于数据库或文件中(文件,excel,mysql,redis,mongodb)

三. 请求与响应#

![](01 爬虫基本原理.assets/1036857-20171102180223529-1349691987.png)python

Copy
# http协议:http://www.cnblogs.com/linhaifeng/articles/8243379.html

# Request:用户将本身的信息经过浏览器(socket client)发送给服务器(socket server)

# Response:服务器接收请求,分析用户发来的请求信息,而后返回数据(返回的数据中可能包含其余连接,如:图片,js,css等)

# 例如:浏览器在接收Response后,会解析其内容来显示给用户,
    而爬虫程序在模拟浏览器发送请求而后接收Response后,是要提取其中的有用数据。

四. Request#

Copy
# 一、请求方式:
    经常使用的请求方式:GET,POST
    其余请求方式:HEAD,PUT,DELETE,OPTHONS

举例:用浏览器演示get与post的区别,(用登陆演示post)
    # post
    post与get请求最终都会拼接成这种形式:k1=xxx&k2=yyy&k3=zzz
    post请求的参数放在请求体内, 可用浏览器查看,存放于form data内.
    # get
    get请求的参数直接放在url后

# 二、请求url
    url全称统一资源定位符,如一个网页文档,一张图片
    一个视频等均可以用url惟一来肯定

    # url编码
        https://www.baidu.com/s?wd=图片
        图片会被编码(看示例代码)
    
    # 网页的加载过程是:
        加载一个网页,一般都是先加载document文档,
        在解析document文档的时候,遇到连接,则针对超连接发起下载图片的请求

# 三、请求头: 通常作爬虫都会加上请求头
    User-agent:请求头中若是没有user-agent客户端配置,
    服务端可能将你当作一个非法用户
    host
    cookies:cookie用来保存登陆信息

# 四、请求体
    若是是get方式,请求体没有内容
    若是是post方式,请求体是format data

举例:
    1、登陆窗口,文件上传等,信息都会被附加到请求体内
    2、登陆,输入错误的用户名密码,而后提交,就能够看到post,正确登陆后页面一般会跳转,没法捕捉到post 

五. Response#

Copy
# 一、响应状态
    200:表明成功
    301:表明跳转
    404:文件不存在
    403:权限
    502:服务器错误

# 二、Respone header
    set-cookie:可能有多个,是来告诉浏览器,把cookie保存下来
    
# 三、preview就是网页源代码
    最主要的部分,包含了请求资源的内容
    如网页html,图片
    二进制数据等

六. 总结#

Copy
# 一、总结爬虫流程:
    爬取--->解析--->存储

# 二、爬虫所需工具:
    请求库:requests,selenium
    解析库:正则,beautifulsoup,pyquery
    存储库:文件,MySQL,Mongodb,Redis

# 三、爬虫经常使用框架:
    scrapy
相关文章
相关标签/搜索