zoukankan      html  css  js  c++  java
  • 爬虫入门基本原理

    爬虫基本原理

    爬虫定义:

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

    爬虫基本流程:

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

    Request包含什么:

    1. 请求方式:GET/POST
    2. 请求URL(统一资源定位符),一个网页文档,一张图片,一个视频
    3. 请求头:User-Agent、Host、Cookies等
    4. 请求体(POST请求时使用) -- form data,请求时额外携带的数据,如表单提交时的表单数据

    Response包含:

    1. 响应状态 -- 状态码
    2. 响应头:内容类型、内容长度、服务器信息、设置cookie
    3. 响应体:请求资源的内容如网页HTML、图片、二进制数据等。

    能抓什么数据:

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

    解析方式:

    1. 直接处理
    2. json解析 -- 网页是ajax加载的
    3. 正则表达式
    4. BeautifulSoup解析库
    5. PyQuery解析库
    6. XPath解析库

    抓到的数据和浏览器看到的不一样:

    存在javascript渲染问题,即看到的网页是经过JS渲染过的网页,而直接请求的没有经过渲染得到的

    解决JavaScript渲染问题:

    1. 分析Ajax请求
    2. Selenium / WebDriver模仿JavaScript渲染
    3. Splash模拟JavaScript渲染
    4. PyV8/Ghost.py

    怎样保存数据

    1. 文本
    2. 关系型数据库:MySQL、Oracle、SQL Server
    3. 非关系型数据库:MongoDB、Redis等Key-Value的形式
    4. 二进制文件:图片视频音频等直接保存
  • 相关阅读:
    如何轻松的从GAC文件夹拷贝dll出来
    UIManager的用法(用于改变界面风格)
    Java休眠睡眠方法
    Thread.currentThread().getContextClassLoader()与Test.class.getClassLoader()的区别
    Openfire编译命令
    Openfire插件开发
    通过Java代码打开浏览器,本地文件目录以及ftp站点
    使用Pack200压缩你的代码
    Java 创建文件与创建文件夹
    Openfire插件制作
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12668573.html
Copyright © 2011-2022 走看看