「Python爬虫系列讲解」一、网络数据爬取概述

本专栏是以杨秀璋老师爬虫著作《Python网络数据爬取及分析「从入门到精通」》为主线、个人学习理解为主要内容,以学习笔记形式编写的。
本专栏不光是自己的一个学习分享,也希望能给您普及一些关于爬虫的相关知识以及提供一些微不足道的爬虫思路。
专栏地址:Python网络数据爬取及分析「从入门到精通」

「Python爬虫系列讲解」一、网络数据爬取概述_第1张图片

1 网络爬虫

1.1 背景引入

随着互联网的迅速发展,万维网已成为大量信息的载体,越来越多的网民可以通过互联网搜索引擎获取所需要的信息。

事实上,市面上通用的搜索引擎是存在一定局限性的:

  • 搜索引擎返回的结果包含大量用户不关心的网页
  • 基于关键字的搜索引擎缺乏语义理解,导致反馈信息不准确
  • 无法处理非结构性数据,尤其是图片。音视频等复杂类型的数据

那么如何有效地提取并利用这些写从互联网上获取的信息呢?面对这一巨大的挑战,定向爬去相关网页资源的网络爬虫应运而生。

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文件等。

「Python爬虫系列讲解」一、网络数据爬取概述_第2张图片

2 相关技术

2.1 HTTP

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

「Python爬虫系列讲解」一、网络数据爬取概述_第3张图片

上图所示的是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爬虫系列讲解」一、网络数据爬取概述_第4张图片
上图使用Python代码简单写的一个登录网页及浏览器显示结果。

事实上,HTML文档的源码包含大量的“<…>”和“”,我们称之为标记(Tag)。标记用于分割和区分内容的不同部分,并告知浏览器它处理的是什么类型的内容。
大多数HTML标记的名字都能准确地描述其用途以及所标注内容的类型,比如:
「Python爬虫系列讲解」一、网络数据爬取概述_第5张图片
下面给出的是通常的网页格式

<!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爬虫系列讲解」一、网络数据爬取概述_第6张图片
因此,Python凭借其诸多优点,进而成为一种能在多种功能,多种平台上撰写脚本及快速开发的理想语言。

3 本文总结

由于Python具有语法清晰简单、易学短小、精炼高效开发、拥有数量庞大的第三方库和活跃的开发社区等特点,越来越被广大的开发人员和编程爱好者所选择,同时,随着网络数据爬取的火热,Python提供了更加丰富的第三方库,如urllib、BeautifulSoup、Selenium、Scrapy等。
接下来就跟着博主一起走进Python数据爬取的知识海洋吧!

欢迎留言,一起学习交流~

感谢阅读

END

你可能感兴趣的:(python,爬虫)