爬虫
网络爬虫又称网络蜘蛛、网络机器人,是按照一定规则自动浏览、检索网页信息的程序或脚本。
爬虫其实是通过编写程序,模拟浏览器上网,然后去互联网上抓取数据的过程
网络爬虫主要用途是采集数据,是数据分析不可或缺的工具之一。
一文解读网络爬虫
爬虫的分类
爬虫分为:通用网络爬虫、聚集网络爬虫、增量式网络爬虫
- 通用网络爬虫:是搜索引擎的重要组成部分,需要遵守robots协议。
robots协议:是一种约定俗成的协议,网站通过此协议告诉搜索引擎哪些页面可以爬取,那些不允许爬取
- 聚集网络爬虫:是面向特定需求的一种网络爬虫程序。抓取页面中特定的局部内容
- 增量式网络爬虫:是指对已下载网页采取增量式更新,是一种只爬取新产生的或已经发生变化网页的爬虫程序
爬虫的价值
抓取互联网上的数据,为我所用,有了大量的数据,就如同有了一个数据银行一样,下一步就是如何将这些数据产品化、商业化。
爬虫是否合法
网络爬虫在法律中是不被禁止,但是具有违法风险,通常来说爬虫分为善意的爬虫和恶意的爬虫。爬虫带来的风险可以体现在如下两个方面:
- 爬虫干扰了被访问网站的正常运营
- 爬虫抓取了受法律保护的特定类的数据或信息
在使用爬虫的过程中怎样避免呢?
- 时常优化自己的程序,避免干扰被访问网站的正常运行
- 在使用、传播爬取到的数据时,审查抓取到的内容,如果发现涉及到用户隐私或者商业机密等敏感内容,需要及时停止爬取或传播
http协议和https协议
http协议:就是服务器和客户端进行数据交互的一种形式。http协议中常用的请求头信息:
- User-Agent(UA):请求载体的身份标识
即用户代理,特殊字符串头,网站服务器通过识别UA来确定用户所用的操作系统版本、CPU类型、浏览器版本等信息
默认爬虫程序直接爬取,请求头中User-Agent不是浏览器的方式,需要对User-Agent进行重构
短时间内总使用一个 UA 高频率访问的网站,可能会引起网站的警觉,从而封杀掉IP。构建代理池可防止这种情况 - Connection:请求完毕后,是断开连接还是保持连接http协议中常用的响应头信息:
- Content-Type:服务器响应回客户端的数据类型https协议其实就是一种安全的http协议
网页构成
网页一般有三部分组成,分别是HTML、CSS、JS
静态网页和动态网页
静态网页
是标准的 HTML 文件,通过 GET 请求方法可以直接获取,文件的扩展名是.html、.htm等,网面中可以包含文本、图像、声音、FLASH 动画、客户端脚本和其他插件程序等。动态网页
指的是采用了`动态网页技术的页面,比如AJAX等技术,不需要重新加载整个页面内容,就可以实现网页的局部更新
URL组成
协议
、域名(ip)
、端口号
、路径
、查询字符串
等
http://www.xxx.com/index?name=xx&age=xx
:
,用于分隔协议和主机组件
?
,用于分隔路径和查询参数等。
=
,用于表示查询参数中的键值对。
&
,符号用于分隔查询多个键值对。
URL 编码协议规定:URL只允许使用ASCII字符集可显示的字符
,比如英文字母、数字、和-
_
.
~
!
*
这 6 个特殊字符。
当在URL中使用不属于ASCII字符集的字符时,就要使用特殊的符号对该字符进行编码,比如空格需要用%20来表示
需要编码的三种情况:
- ASCII 表中没有对应的可显示字符,例如,汉字
- 不安全字符,包括:# ” % < > [ ] { } | \ ^ `
- 部分保留字符,即
&
/
:
;
=
?
@
Http基础
爬虫是一个模拟浏览器进行 HTTP 请求的过程
URI 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串
URL 统一资源定位符,一种定位资源的主要访问机制的字符串
URN 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源
什么是 HTTP ?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据
什么是HTTPS?
一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包
主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性
Request请求
客户端发送http请求到服务器
http请求报文由请求行、请求头、空行、请求数据4部分组成
1、请求行:请求方法、请求地址url、http协议版本
请求方法常见有get、post
2、请求头常用信息:accept、accept-language、cookie、referer、user-agent、content-type
3、请求数据,get请求请求体为空
Response响应
服务端接收请求并处理后,返回响应内容给客户端
http响应内容由响应行、响应首部、响应体
1、响应行:http协议版本号、状态码、状态码简短描述
常见404代表页面找不到、200代表服务器正常响应、500代表服务器内部错误
2、响应头包含服务器对请求的应答信息
3、响应体,响应的正文数据
爬虫程序的简单流程
- 先获取网页的内容HTML对象,如使用内置urllib或第三方requests库
- 使用浏览器打开网页源代码分析网页结构以及元素节点
- 再根据规则提取所需数据,如使用beautifulsoup 或 正则表达式
- 存储数据到本地磁盘或数据库