爬虫基本原理

1. 什么是爬虫

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

2. 爬虫基本流程

  • 发起请求

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

  • 获取响应

    如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。

  • 解析内容

    得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步处理。

  • 保存数据

    保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

3. 什么是Request和Response

4. Request中包含什么

  • 请求方式

主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。

  1. GET:请求的参数全都包含在请求的网址中。直接输入链接即可访问。
  2. POST:与GET不同,请求的信息封装了,包含在Formdata中。需要构造表单,然后点击提交。
  • 请求URl

URL全称统一资源定位符,入一个网页文档、一张图片、一个视频等都可以用URL唯一来确定。

  • 请求头Headers

包含请求时的头部文件,包含了很重要配置信息,如User_Agent、Host、Cookies等信息。

  • 请求体

请求时额外携带的数据,如表单提交时的表单数据。一般GET请求无需请求体,POST请求则需要请求体。

5. Response中包含什么

  • 响应状态status_code

有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误。

  • 响应头headers

如内容类型、内容长度、服务器信息、设置Cookie等等。键值对的形式。

  • 响应体

最主要的部分,包含了请求资源的内容,如网页HTML,图片二进制数据等。

6. 能抓怎样的数据

  • 网页文本

如HTML文档、Json格式文本等。

  • 图片

获取到的是二进制文件、保存为图片格式。

python //example 保存了一个图片 import requests response = requests.get('https://www.baidu.com/img/baidu_jgylogo3.gif') print(response.content) with open('C:/Users/Administrator/Desktop/1.gif', 'wb') as f: f.write(response.content)

  • 视频

同为二进制文件,保存为视频格式即可。

  • 其它

7. 怎样进行网页的解析

  • 解析方式
  1. 直接处理
  2. Json解析(Ajax)
  3. 正则表达式
  4. BeautifulSoap
  5. PyQuery
  6. XPath
  • 为什么抓到的和浏览器看到的不一样

因为抓到的结果里面有很多js文件,里面包含的网页中内容的请求。浏览器则是把所有js加载完毕后才显示出来的。

8. 怎样解决JavaScript渲染的问题

  • 分析Ajax请求
  • Selenium/WebDriver (模拟渲染)
  • Splash(同上)
  • PyV8、Ghost.py

9. 怎样保存数据

  • 文本

纯文本、Json、Xml等

  • 关系型数据库

如MySQL、Oracle、SQL Server等具有结构化表结构形式存储。

  • 非关系型数据库

如MongoDB、Redis等Key_Value形式存储。

  • 二进制文件

如图片、视频、音频等等直接保存成特定格式即可。

Python爬虫基本原理的更多相关文章

  1. python爬虫基本原理及入门

    爬虫:请求目标网站并获得数据的程序 爬虫的基本步骤: 使用python自带的urllib库请求百度: import urllib.request response = urllib.request.u ...

  2. Python爬虫【一】爬虫的基本原理

    一.爬虫基本原理 1.获取网络数据 用户方式:浏览器提交请求->下载网页代码->解析/渲染成页面 爬虫方式:模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放 ...

  3. python应用之爬虫实战1 爬虫基本原理

    知识内容: 1.爬虫是什么 2.爬虫的基本流程 3.request和response 4.python爬虫工具 参考:http://www.cnblogs.com/linhaifeng/article ...

  4. Python爬虫学习一------HTTP的基本原理

    昨天刚买的崔大大的<Python3网络爬虫开发实战>,今天就到了,开心的读完了爬虫基础这一章,现记录下自己的浅薄理解,如有见解不到位之处,望指出. 1.HTTP的基本原理 ①我们经常会在浏 ...

  5. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  6. Python爬虫基础知识入门一

    一.什么是爬虫,爬虫能做什么 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.比如它在抓取一个网 ...

  7. python爬虫如何入门

    学爬虫是循序渐进的过程,作为零基础小白,大体上可分为三个阶段,第一阶段是入门,掌握必备的基础知识,第二阶段是模仿,跟着别人的爬虫代码学,弄懂每一行代码,第三阶段是自己动手,这个阶段你开始有自己的解题思 ...

  8. python爬虫知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  9. Python爬虫实践 -- 记录我的第二只爬虫

    1.爬虫基本原理 我们爬取中国电影最受欢迎的影片<红海行动>的相关信息.其实,爬虫获取网页信息和人工获取信息,原理基本是一致的. 人工操作步骤: 1. 获取电影信息的页面 2. 定位(找到 ...

随机推荐

  1. 谷歌chrome 插件(扩展)开发——进阶篇(c#本地程序和插件交互)下

    在上一篇中,我提出了总任务.接下来去实现. 获取网页内容等其它信息,这是content.js 擅长做的事情: chrome.extension.onMessage.addListener( funct ...

  2. C# Redis实战(四)

    四.写入数据 在C# Redis实战(三)中我们已经配置好了web.config程序,并且能通过C#代码来读取和管理以上配置信息. 接下来,就可以进行Redis的数据写入了.Redis中可以用Stor ...

  3. video常用功能

    本文的目录: 1.获取影片总时长2.播放.暂停3.获取影片已播放时间和设置播放点4.音量的获取和设置 第一.获取影片总时长 对播放器(video)操作,首先要得到的是影片的一些信息,其中一个就是总时长 ...

  4. Unity的常用API

    1.Event Function:事件函数   Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧 ...

  5. Java 中 利用正则表达式 获取 网页图片

    import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;i ...

  6. JAVA获取文件数据 ( xxxxx.json )

    //路径fPixFile filePath = new File(fPix);System.out.print("文件路径:" + filePath);try { if (file ...

  7. 冒泡排序及优化(Java实现)

    向大端冒泡 public class BubbleSort { public static <T extends Comparable<? super T>> void sor ...

  8. IntelliJ IDEA 2017.1.5迁移eclipse,SSM项目,通过jrebel实现热部署

    1.首先打开idea,配置SVN版本控制器的路径 2.配置maven 3.配置jrebel热部署的路径 4.从svn到出项目 5.配置配置tomacat参数-server -XX:PermSize=1 ...

  9. angularJS使用rootscope创建父域和子模态框通用的属性与函数

    1. 在声明创建controller指明引用$rootscope reviewInterfaceDo.controller('reviewInterfaceDo', function($scope, ...

  10. Gauge----自动化测试工具

    * Gauge是一个自动化测试工具,主要是通过.spec 文件指定执行的步骤,然后由Java代码去测试 安装: * 安装插件 Gauge--install-all *在IDEA中安装Gauge插件 基 ...