做者 :荣仔!最靓的仔!
专栏地址 :http://suo.im/5Rh1z1html

1 网络爬虫
1.1 背景引入
随着互联网的迅速发展,万维网已成为大量信息的载体,愈来愈多的网民能够经过互联网搜索引擎获取所须要的信息。web
事实上,市面上通用的搜索引擎是存在必定局限性的:正则表达式
-
搜索引擎返回的结果包含大量用户不关心的网页 -
基于关键字的搜索引擎缺少语义理解,致使反馈信息不许确 -
没法处理非结构性数据,尤为是图片。音视频等复杂类型的数据
那么如何有效地提取并利用这些从互联网上获取的信息呢?面对这一巨大的挑战,定向爬取相关网页资源的网络爬虫应运而生。数据库
1.2 归纳介绍
网络爬虫
又被称为网页蜘蛛或网络机器人,它是一种按照必定的规则,自动爬取万维网信息的程序或者脚本。编程
网络爬虫根据既定的爬取目标,有选择的访问万维网上的网页与相关连接,获取所须要的信息;浏览器
根据使用场景,网络爬虫可分为通用网络爬虫
和定向网络爬虫
:服务器
-
通用网络爬虫是搜索引擎爬取系统的重要组成部分,它将互联网上的网页信息下载至本地,造成一个互联网内容镜像备份库,从而支撑整个搜索引擎,其覆盖面广,数据丰富,好比百度,Google等。 -
定向网络爬虫并不追求大的覆盖,是面向特定主题的一种网络爬虫,其目标是爬取与某一特定主题相关的网页,为面向主题的用户查询准备数据资源,同时定向爬虫在实施网页爬取时,会对内容进行处理筛选,从而保证爬取的信息与主题相关。
网络爬虫按照系统结构和实现技术分类:微信
-
通用网络爬虫(General Purpose Web Crawler) -
聚焦网络爬虫(Focused Web Crawler) -
增量式网络爬虫(Incremental Web Crawler) -
深层网络爬虫(Deep Web Crawler)
实际的网络爬虫一般是由几种爬虫技术相结合实现的。网络
网络数据分析一般包括前期准备
、数据爬取
、数据预处理
、数据分析
、可视化绘图
、分析评估
6个步骤。数据结构
其中,数据爬取又主要分为如下四个步骤:
-
需求分析:
首先须要分析网络数据爬取的需求,而后了解所爬取主题的网址、内容分布,所获取语料的字段、图集等内容。 -
技术选择:
网页爬取技术可经过Python、Java、C++、C#等不一样的编程语言实现,主要涉及的技术包括urllib库、正则表达式、Selenium、BeautifulSoup、Scrapy等技术。 -
网页爬取:
肯定好爬取技术后,须要分析网页的DOM树结构,经过XPath技术定位网页所爬取内容的节点,再爬取数据;同时,部分网站涉及页面跳转、登陆验证等。 -
存储技术:
该技术主要是存储爬取的数据信息,这些数据信息主要包括SQL数据库、纯文本格式的文件、CSV/XLS文件等。

2 相关技术
2.1 HTTP
HTTP
即超文本传输协议
的英文缩写,英文全称是Hypertext Transfer Protocol
。
它是互联网上应用最为普遍的一种网络协议,主要用于服务器与客户机之间传输超文本文件。全部的WWW文件都必须遵照这个协议。
HTTP是一个客户端和服务器端请求和应答的标准,其中,客户端是终端用户,服务器端是网站。经过使用Web浏览器、网络爬虫或者其余工具,客户端发起一个到服务器制定端口(默认端口为80)的HTTP请求。

上图所示的是HTTP协议的原理图,一般包括两部分:
-
HTTP客户端发起一个请求,创建一个到服务器指定端口的TCP链接. -
HTTP服务器则在该指定端口监听客户端发送过来的请求。一旦收到请求,服务器就向客户端发回一个状态行,好比成功访问状态码为 HTTP/1.1 200 OK
,同时返回响应消息,包括请求文件,错误消息或者其余一些信息。
2.2 HTML
HTML
即超文本标记语言
的英文缩写,英文全称是Hypertext Markup Language
。
它是用来建立超文本的语言,用HTML建立超文本文档称为HTML文档,它能独立于各类操做系统平台。
因为“HTML标签”的便捷性和实用性,HTML语言也就被广大用户和使用者承认,并被当作万维网信息的表示语言。使用HTML语言描述的文件须要经过Web浏览器显示效果。
最新的HTML版本为HTML5,它拥有强大的灵活性,能编写更为高端的动态网页。

上图使用Python代码简单写的一个登陆网页及浏览器显示结果。
事实上,HTML文档的源码包含大量的<…>
和</…>
,咱们称之为标记
(Tag)。标记用于分割和区份内容的不一样部分,并告知浏览器它处理的是什么类型的内容。
大多数HTML标记的名字都能准确地描述其用途以及所标注内容的类型,好比:

下面给出的是一般的网页格式:
<!DOCTYPE html>
<html name="总体">
<head name="头部">
<title name="眼睛">标题</title>
</head>
<body name="身体">内容</body>
</html>
HTML的标记包含在一对尖括号
(<>)之间,以便与普通文本明确区分开。第一个点括号
(<)代表标签的开头,随后是特定标签名
(如img),最后是反向尖括号
(>)表示结束。
注:
因为Python网络爬虫须要分析网页的HTML源码其树形结构,因此在编写爬虫以前必须掌握HTML基础知识。
2.3 Python
Python
是荷兰人Guido van Rossum在1989年开发的一种脚本新解释语言,是一种面向对象的解释型计算机程序设计语言。
Python是纯粹的自由软件,其语法简洁清晰,特点之一是强制使用空白符(White Space)做为语句缩进。
因为Python具备丰富而强大的第三方库,因此常被昵称为“胶水语言”,它可以把用其余语言制做各类模块(尤为是C/C++)很轻松的联合在一块儿。
Python做为一门语法清晰,易于学习功能,强大的编程语言,既能够做为面向对象语言应用于各领域,也能够做为脚本编程语言处理特定的功能,而且Python语言含有高效率的数据结构,与其余的面向对象编程语言同样,具备参数、列表、函数、流程控制、类、对象、正则表达式等功能。

所以,Python凭借其诸多优势,进而成为一种能在多种功能,多种平台上撰写脚本及快速开发的理想语言。
3 本文总结
因为Python具备语法清晰简单、易学短小、精炼高效开发、拥有数量庞大的第三方库和活跃的开发社区等特色,愈来愈被广大的开发人员和编程爱好者所选择,同时随着网络数据爬取的火热,Python提供了更加丰富的第三方库,如urllib、BeautifulSoup、Selenium、Scrapy等。接下来就跟着博主一块儿走进Python数据爬取的知识海洋吧!
未完,待续......
若是你以为本文写得好,能够扫描下方二维码,关注做者的CSDN博客
,更多精彩文章抢先看。
关注微信公众号『数据分析与统计学之美』,添加做者微信号,拉你入群哦,气氛杠杠的!看到这里,麻烦您点个再看,让更多朋友看到哦!

本文分享自微信公众号 - 数据分析与统计学之美(gh_21c25c7e71d0)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。