爬虫基本原理

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. 【最新】Power BI混合现实应用Mixed Reality app预览版正式发布

    1.介绍 2018年3月13日,Power BI在官方博客和Docs文档发布了Power BI for Mixed Reality应用预览版的消息, 也就是可以以后在更虚拟的世界中来观察你的报表,想象 ...

  2. SLIC superpixel算法

    标题 SLIC superpixel算法 作者 YangZheng 联系方式 263693992 SLIC算法是simple linear iterative cluster的简称,该算法用来生成超像 ...

  3. 在windows8.1下安装ubuntu16.04

    (一)首先来简要了解一些linux的概念! 1.发行版本和内核版本的区别与联系:linux发行版本是"内核版本+一系列挂载软件"的集合体,光是一个内核版本是无法当做操作系统运行的. ...

  4. 免费后台管理UI界面、html源码推荐

    一个好的UI应该满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容IE8.不考虑兼容IE6/IE7,因为现在还有很多公司在使用Win7系统,系统内置了IE8 3.能通过选项卡打开多个页面,不 ...

  5. 永久开启完整版Google Play

    中国内地使用Play商店只能看见两个项目,即应用和游戏,但实际上有六个,见图.解决方法,第一,通过fqrouter2进入Play商店,见图,第二,通过google wallet. 参考网址:http: ...

  6. Cucumber 相关资源

    Cucumber support: https://cucumber.io/support yan1234abcd的专栏:http://blog.csdn.net/yan1234abcd/articl ...

  7. 【.NetCore】基于jenkins以及gitlab的持续编译及发布

    前沿 其实本来是想把标题叫做持续集成的,只是后来看看研究出的内容,就只有发布这一个动作,自动化测试等内容也未涉及到,所以改名叫持续编译及发布应该更加贴切吧? 问题背景 其实目前我们传统方式上的发布方式 ...

  8. spark source code 分析之ApplicationMaster overview(yarn deploy client mode)

    一直不是很清楚ApplicationMaster的作用,尤其是在yarn client mode和cluster mode的区别 网上有一些非常好的资料,请移步: https://blog.cloud ...

  9. vue简单的自由拖拽

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. ASP.NET MVC编程——视图

    1Razon语法 使用@符号后接C#或VB.NET语句的方式. 基本规则 1)变量 @后直接变量即可 2)代码块 为使用表达式或多行代码,@后跟大括号将多行代码包括在大括号中 3)"+&qu ...