爬虫(一):爬虫简介

1. 爬虫简介

1.1 爬虫是什么?

什么是爬虫,以下是百度百科上的解析:

很多人都将互联网比喻成一张非常大的网,将世界连接起来。如果说互联网是一张网,那么爬虫就像在网上爬的小虫子,通过网页的链接地址来寻找网页,通过特定的搜索算法来确定路线,通常从网站的某一个页面开始,读取该网页的内容,找到该网页中的其他链接地址,然后通过这些链接地址寻找下一个网页,就这样一直循环下去,直到将该网站的所有网页全部抓取为止。

1.2 爬虫原理

发起请求:
使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等

接收响应:
如果服务器能正常响应,则会得到一个Response
Response包含:html,json,图片,视频等

解析网页:
解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等
解析json数据:json模块
解析二进制数据:以b的方式写入文件

存储资源:
数据库

1.3 发送请求

爬虫的第一个步骤就是对起始 URL 发送请求,以获取其返回的响应

值得注意的是,发送请求实质上是指发送请求报文的过程

请求报文包括以下四个方面:请求行、请求头、空行和请求体。

(1)请求行

请求行由请求方法、请求 URL 和 HTTP 协议版本 3 个字段组成,字段间使用空格分隔

请求方法:请求方法是指对目标资源的操作方式,常见的有 GET 方法和 POST 方法

GET:从指定的资源请求数据,查询字符串包含在 URL 中发送

POST:向指定的资源提交要被处理的数据,查询字符串包含在请求体中发送

请求 URL:请求 URL 是指目标网站的统一资源定位符 (Uniform Resource Locator,URL)

HTTP 协议版本:HTTP 协议是指通信双方在通信流程和内容格式上共同遵守的标准

(2)请求头

请求头被认为是请求的配置信息,以下列举出常用的请求头信息

User-Agent:包含发出请求的用户的信息,设置 User-Agent 常用于处理反爬虫

Cookie:包含先前请求的内容,设置 Cookie 常用于模拟登陆

Referer:指示请求的来源,用于可以防止链盗以及恶意请求

(3)空行

空行标志着请求头的结束

(4)请求体

请求体根据不同的请求方法包含不同的内容

如果是get方式,请求体没有内容

如果是post方式,请求体是format data

1.4 接收响应

爬虫的第二个步骤就是获取特定 URL 返回的响应,以提取包含在其中的数据。

同样的,响应其实是指完整响应报文,它包括四个部分:响应行、响应头、空行和响应体。

(1)响应行

响应行由 HTTP 协议版本、状态码及其描述组成。

HTTP 协议版本:HTTP 协议是指通信双方在通信流程和内容格式上共同遵守的标准。

状态码及其描述:

100~199:信息,服务器收到请求,需要请求者继续执行操作

200~299:成功,操作被成功接收并处理

300~399:重定向,需要进一步的操作以完成请求

400~499:客户端错误,请求包含语法错误或无法完成请求

500~599:服务器错误,服务器在处理请求的过程中发生错误

(2)响应头

响应头用于描述服务器和数据的基本信息,以下列举出常用的响应头信息

Set-Cookie:设置浏览器 Cookie,以后当浏览器访问符合条件的 URL 时,会自动带上该 Cooike

(3)空行

空行标志着响应头的结束。

(4)响应体

响应体就是网站返回的数据,在下一个步骤中我们需要对其进行分析处理。

1.5 解析网页

解析网页实质上需要完成两件事情,一是提取网页上的链接,二是提取网页上的资源。

(1)提取链接

提取链接实质上是指获取存在于待解析网页上的其他网页的链接。

网络爬虫需要给这些链接发送请求,如此循环,直至把特定网站全部抓取完毕为止。

(2)提取资源

提取数据则是爬虫的目的,常见的数据类型如下:

文本:HTML,JSON 等

图片:JPG,GIF,PNG 等

视频:MPEG-1、MPEG-2 和 MPEG4,AVI 等

最终,我们可以对所获得的资源作进一步的处理,从而提取出有价值的信息。

原文地址:https://www.cnblogs.com/liuhui0308/p/12045135.html

时间: 2024-10-29 15:23:03

爬虫(一):爬虫简介的相关文章

开源的网络爬虫以及一些简介和比较

转 目前网络上开源的网络爬虫以及一些简介和比较 目前网络上有不少开源的网络爬虫可供我们使用,爬虫里面做的最好的肯定是google ,不过google公布的蜘蛛是很早的一个版本,下面是几种开源的网络爬虫的简单对比表: 下面我们再对Nutch.Larbin.Heritrix这三个爬虫进行更细致的比较: Nutch 开发语言:Java http://lucene.apache.org/nutch/ 简介: Apache的子项目之一,属于Lucene项目下的子项目. Nutch是一个基于Lucene,类

【java爬虫】---爬虫+基于接口的网络爬虫

爬虫+基于接口的网络爬虫 上一篇讲了[java爬虫]---爬虫+jsoup轻松爬博客,该方式有个很大的局限性,就是你通过jsoup爬虫只适合爬静态网页,所以只能爬当前页面的所有新闻.如果需要爬一个网 站所有信息,就得通过接口,通过改变参数反复调该网站的接口,爬到该网站的所有数据信息. 本博客以爬金色财经新闻信息为对象,去爬取该网站从建站以来发表的所有新闻信息.下面会一步一步讲解.这里重点重点讲思路,最后我会提供完整源码. 第一步:找接口 你要获得该网站所有新闻数据,第一步当然是获得接口,通过接口

python3爬虫--反爬虫应对机制

python3爬虫--反爬虫应对机制 内容来源于: Python3网络爬虫开发实战: 网络爬虫教程(python2): 前言: 反爬虫更多是一种攻防战,针对网站的反爬虫处理来采取对应的应对机制,一般需要考虑以下方面: ①访问终端限制:这种可通过伪造动态的UA实现: ②访问次数限制:网站一般通过cookie/IP定位,可通过禁用cookie,或使用cookie池/IP池来反制: ③访问时间限制:延迟请求应对: ④盗链问题:通俗讲就是,某个网页的请求是有迹可循的,比如知乎的问题回答详情页,正常用户行

爬虫-认识爬虫

爬虫 - 认识爬虫 什么是上网?爬虫要做的是什么? 我们所谓的上网便是由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程. 用户获取网络数据的方式是: 浏览器提交请求->下载网页代码->解析/渲染成页面. 而爬虫程序要做的就是: 模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中 定义 通过编写程序,模拟浏览器上网,向网站发起请求,让其去互联网上获取数据后分析并提取有用数据的程序爬虫的基本流程 """

爬虫框架--scrapy简介

简介 scrapy被认为是比较简单的爬虫框架,资料比较齐全,网上也有很多教程.官网上介绍了它的四种安装方法,PyPI.Conda.APT.Source,我们只介绍最简单的安装方法. Windows下的安装 pip install scrapy Linux下的安装 apt-get install python-scrapy APT 因为Linux的强大及辅助工具比较多,大家比较喜欢在Linux下使用scrapy爬虫框架,Linux下编写python代码最强大的工具可属eclipse,但最方便的要属

目前网络上开源的网络爬虫以及一些简介和比较

目前网络上有不少开源的网络爬虫可供我们使用,爬虫里面做的最好的肯定是google ,不过google公布的蜘蛛是很早的一个版本,下面是几种开源的网络爬虫的简单对比表: 下面我们再对Nutch.Larbin.Heritrix这三个爬虫进行更细致的比较: Nutch 开发语言:Java http://lucene.apache.org/nutch/ 简介: Apache的子项目之一,属于Lucene项目下的子项目. Nutch是一个基于Lucene,类似Google的完整网络搜索引擎解决方案,基于H

python爬虫----scrapy框架简介和基础应用

一.什么是scrapy? scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板. 二.安装 Linux: pip3 install scrapy Windows: a. pip3 install wheel b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted c. 进入下载目

Python 爬虫-Scrapy爬虫框架

2017-07-29 17:50:29 Scrapy是一个快速功能强大的网络爬虫框架. Scrapy不是一个函数功能库,而是一个爬虫框架.爬虫框架是实现爬虫功能的一个软件结构和功能组件集合.爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫.  一.Scrapy框架介绍 5+2结构,5个主要模块加2个中间件. (1)Engine:控制所有模块之间的数据流:根据条件触发事件.不需要用户修改 (2)Downloader:根据请求下载网页.不需要用户修改 (3)Scheduler:对所有爬取请求进行调

2017.07.28 Python网络爬虫之爬虫实战 今日影视2 获取JS加载的数据

1.动态网页指几种可能: 1)需要用户交互,如常见的登录操作: 2)网页通过js / AJAX动态生成,如一个html里有<div id="test"></div>,通过JS生成<divid="test"><span>aaa</span></div>: 3)点击输入关键字后进行查询,而浏览器url地址不变 2.想用Python获取网站中JavaScript返回的数据,目前有两种方法: 第一种方法

增量爬虫,垂直爬虫

2.增量型爬虫(Incremental Crawler):增量型爬虫与批量型爬虫不同,会保持持续不断的抓 取,对于抓取到的网页,要定期更新,因为互联网的网页处于不断变化中,新增网页.网页被删除或者网页内容更改都很常见,而增量型爬虫需要及时反映这种变 化,所以处于持续不断的抓取过程中,不是在抓取新网页,就是在更新已有网页.通用的商业搜索引擎爬虫基本都属此类. 3.垂直型爬虫(Focused Crawter):垂直型爬虫关注特定主题内容或者属于特定行业的网页,比如 对于健康网站来说,只需要从互联网页