什么是爬虫?

爬虫可以做什么?

爬虫的本质

爬虫的基本流程

什么是request&response

爬取到数据该怎么办

什么是爬虫?

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据

爬虫可以做什么?

你可以爬取小姐姐的图片,爬取自己有兴趣的岛国视频,或者其他任何你想要的东西,前提是,你想要的资源必须可以通过浏览器访问的到。

爬虫的本质是什么?

上面关于爬虫可以做什么,定义了一个前提,是浏览器可以访问到的任何资源,特别是对于知晓web请求生命周期的学者来说,爬虫的本质就更简单了。爬虫的本质就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。

浏览器打开网页的过程:

1、在浏览器的输入地址栏,输入想要访问的网址。

2、经过DNS服务器找到服务器主机,向服务器发送一个请求

3、服务器经过解析处理后返回给用户结果(包括html,js,css文件等等内容)

4、浏览器接收到结果,进行解释通过浏览器屏幕呈现给用户结果

上面我们说了爬虫的本质就是模拟浏览器自动向服务器发送请求,获取、处理并解析结果的自动化程序。

爬虫的关键点:模拟请求,解析处理,自动化。

爬虫的基本流程

发起请求

通过HTTP库向目标站点发起请求(request),请求可以

包含额外的header等信息,等待服务器响应

获取响应内容

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

解析内容

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

保存数据

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

Request & Response

浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request

服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response

浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后通过显示器呈现给用户

我们以访问百度为例:

Request中包含什么?

请求方式

主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS

GET和POST的区别就是:请求的数据GET是在url中,POST则是存放在头部

GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

PUT:向指定资源位置上传其最新内容。

OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

DELETE:请求服务器删除Request-URI所标识的资源。

请求URL

URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL的格式由三个部分组成:

第一部分是协议(或称为服务方式)。

第二部分是存有该资源的主机IP地址(有时也包括端口号)。

第三部分是主机资源的具体地址,如目录和文件名等。

爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。

请求头

包含请求时的头部信息,如User-Agent,Host,Cookies等信息,下图是请求请求百度时,所有的请求头部信息参数

请求体

请求是携带的数据,如提交form表单数据时候的表单数据(POST)

Response中包含了什么

所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。

响应状态

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

1xx消息——请求已被服务器接收,继续处理

2xx成功——请求已成功被服务器接收、理解、并接受

3xx重定向——需要后续操作才能完成这一请求

4xx请求错误——请求含有词法错误或者无法被执行

5xx服务器错误——服务器在处理某个正确请求时发生错误 常见代码: 200 OK 请求成功 400 Bad Request 客户端请求有语法错误,不能被服务器所理解 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden 服务器收到请求,但是拒绝提供服务 404 Not Found 请求资源不存在,eg:输入了错误的URL 500 Internal Server Error 服务器发生不可预期的错误 503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 301 目标永久性转移 302 目标暂时性转移

响应头

如内容类型,类型的长度,服务器信息,设置Cookie,如下图:

响应体

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

爬取数据类型

网页文本:如HTML文档,Json格式化文本等

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

视频:同样是二进制文件

其他:只要请求到的,都可以获取

解析数据方法

1 直接处理2 Json解析3 正则表达式处理4 BeautifulSoup解析处理5 PyQuery解析处理6 XPath解析处理

关于抓取的页面数据和浏览器里看到的不一样的问题

出现这种情况是因为,很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的不同。

如何解决js渲染的问题?

分析ajax

Selenium/webdriver

Splash

PyV8,Ghost.py

保存数据

文本:纯文本,Json,Xml等

关系型数据库:如mysql,oracle,sql server等结构化数据库

非关系型数据库:MongoDB,Redis等key-value形式存储

python爬虫可以干什么-Python 爬虫一 简介相关推荐

  1. python爬虫可以干什么-python爬虫能够干什么

    Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的抓取和处理,相比于其他语言,Python是一门非常适合开发网络爬虫的编程语言,大量内置包,可以轻松实现网络爬虫功能. Pyth ...

  2. python网络爬虫可以干什么,python网络爬虫有什么用

    python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析.挖掘.机器学习等提供重要的数据源.什么是爬虫? (推荐学习:Python视频教程)网络爬虫(又 ...

  3. python都可以干什么-python都能干嘛

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. python有很多优雅有趣的代码写法,同时还很简短,以至于当我刚开始接触 ...

  4. python都可以干什么-python都可以做什么用

    为什么这么多人学Python呢?很多初学者都听说python很火,可是为啥要学Python,下面谈谈我的感悟. python语言是我目前为止用的最爽的语言,因为它真的很优美.虽然c,c++,java也 ...

  5. python主要是干什么用的-Python到底可以干什么?主要应用领域

    如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...

  6. python到底能干啥-Python到底可以干什么?主要应用领域

    如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...

  7. python编程语言能干什么-编程语言Python,可以用来干什么

    原标题:编程语言Python,可以用来干什么 Python因为简单全面易用而成为近年来大热的编程语言.但是很多人学习了这门余元的语法和基本功能之后却不知道Python能干什么以及怎么做.在此,把Pyt ...

  8. python语言的编程模式是什么意思_编程语言Python,可以用来干什么

    原标题:编程语言Python,可以用来干什么 Python因为简单全面易用而成为近年来大热的编程语言.但是很多人学习了这门余元的语法和基本功能之后却不知道Python能干什么以及怎么做.在此,把Pyt ...

  9. Python 网络爬虫 001 (科普) 网络爬虫简介

    Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...

最新文章

  1. 介绍一个.Net资源站点
  2. 在Bash中将字符串拆分为数组
  3. Python爬虫:Xpath语法笔记
  4. 观察者设计模式二:回调函数
  5. poj2392 Space Elevator
  6. python斐波那契数列前20项_Python每日一练之实现斐波那契数列
  7. 聊聊天,如果能重来,还干不干程序员?
  8. 在Ubuntu下面编译WizNote Qt Project
  9. HDU2031 进制转换
  10. python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)
  11. SylixOS -- 网卡驱动浅析
  12. SLAM中Bundle Adjustment与图优化
  13. Heli Track
  14. 初学者须知 常见Web前端开发工具有哪些
  15. pandas以文本形式读取Excel表数据写法
  16. 嵌入式Linux 3G pppd拨号上网问题
  17. 三个和尚没水喝的启发
  18. 金蝉机器人_《金蝉脱壳2》残暴!机器人身份姓名首次曝光监狱更具压迫感
  19. RAID卡及其管理工具
  20. 总结整理时下流行的浏览器User-Agent大全

热门文章

  1. dns tunnel工具地址
  2. 神经网络预测mnist时候如果不归一化,则准确率仅仅10%下文作者svm也遇到了。
  3. neat算法——本质就是遗传算法用于神经网络的自动构建
  4. DNS SOA NS区别
  5. angular学习笔记(三十)-指令(4)-transclude
  6. LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统...
  7. golang之包和锁的机制
  8. keras 修仙笔记一
  9. 学习PHP 逛的几个网站。
  10. HNU 2015暑期新队员训练赛2 H Blanket