zoukankan      html  css  js  c++  java
  • 爬虫原理分析


    1、什么是爬虫?

    答:请求网站并提取数据的自动化程序


    2、爬虫的基本流程

    (1)、发送请求:

    通过Http库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应

    (2)、获取响应内容

    如服务器正常响应,即返回一个Response对象,其内容即为所要获取的页面内容,但其类型可能是HTML,JSON字符串。二进制数据(包含图片/视频)等类型

    (3)、解析内容

    对于返回的response为HTML,我们可以使用正则表达式、网页解析库进行解析;对于JSON字符串,我们将其转为Json对象进行解析;对于二进制数据,我们需对其进行进一步处理

    (4)、保存数据

    这里我们需对等到的数据进行结构化的存储,可以存为文本、可以存到数据库、或者存为你想保存的数据类型,方便进一步操作


    3、Request详解

    (1)、请求方式:

    主要为GET、POST两种类型,其他的小伙伴们了解即可(打开Chrome 浏览一个网页--右击检查开启开发者工具--单击Network选项卡找到Headers --General中的Request Method :即可查看请求方式 );GET请求特点:请求参数都在url中 /POST请求特点:Headers中多了form data ,另外url中不包含一些请求参数

    (2)、请求URL(统一资源定位符,如一个网页文档、图片等具有唯一的url进行定位)

    (3)、请求头(包含配置信息)【User-Agent ; Referer ;Cookies这三个为重要配置信息】

    配置信息作用:服务器会根据请求头中的信息,来判断请求是否合法,决定是否返回response

    (4)、请求体(只用于post请求)


    4、Response详解

    (1)、响应状态(200--表示成功,其他数字请参考:http://tool.oschina.net/commons?type=5)

    (2)、响应头(Response Headers)

    (3)、响应体(包含网页的源代码、图片、视频、二进制数据等)


    5、爬虫能爬什么信息????

    答:

    (1)网页文本,如HTML文档、Json格式文本

    (2)、图片、视频等(二进制流)


    6、解析方式详解(获取响应后我们需进行解析)

    (1)、直接处理(针对返回的是字符串的网页)

    (2)、json解析(针对Ajax加载的数据)

    (3)、正则表达式

    (4)、BeautifulSoup

    (5)、PyQuery

    (6)、Xpath 或Css


    7、解决JavaScript渲染问题

    (1)、分析Ajax请求

    (2)、Selenium/WebDriver

    (3)、Splash

    (4)、PyV8Ghost.py


    8.保存数据

    (1)、文本(纯文本、json、xml等)

    (2)、关系型数据库(mysql oracle sql server)存为结构化的数据

    (3)、非关系型数据库(mongodb redis)存为KEY-VALUE形式

    (4)、二进制文件(图片、视频、音频等)


    总结:小伙伴们是不是对爬虫的整个流程有了宏观的认识了!(下面让我们开始练习吧)


  • 相关阅读:
    开发3dMax插件的方法和应用
    实现X*N
    fork与vfork的区别
    使用递归算法写一段程序
    宏和函数的区别
    多线程学习(一)
    [算法天天练]堆排序
    [转][算法天天练]堆与堆排序
    [转]快速排序 挖坑讲解方法
    [算法天天练]选择排序法
  • 原文地址:https://www.cnblogs.com/518894-lu/p/9021548.html
Copyright © 2011-2022 走看看