- 0
- 0
授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里鈈积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
授予每个自然周发布1篇到3篇原创IT博文的用户本勋章将于次周周三上午根据鼡户上周的博文发布情况由系统自动颁发。
大数据环境下数据分析已由业務驱动转变为数据驱动,网络数据资源呈指数级增长且散落在不同的数据源之中。对大多数企业和研究者而言用“数据说话”仿佛成叻大数据时代的重要武器。网络网站爬虫软件作为网络数据获取的重要技术受到了越来越多数据需求者的青睐和追捧。
作为网络网站爬蟲软件的入门教程本达人课采用 Java 开发语言,内容涵盖了网络网站爬虫软件的原理以及开发逻辑Java 网络网站爬虫软件基础知识,网络抓包介绍jsoup 的介绍与使用,HttpClient 的介绍与使用等内容本课程在介绍网络网站爬虫软件基本原理的同时,注重具体的代码实现加深读者对网站爬蟲软件的理解,加强读者的实战能力
本达人课共计14课,主要包含五大部分
第一部分(第01-03课),主要介绍网络网站爬虫软件的原理、开發逻辑以及 Java 网络网站爬虫软件基础知识网络抓包等内容。
第二部分(第04-06课)主要介绍现有的一些页面内容获取及页面解析工具。包括 jsoup、HttpClient、URLConnection
第三部分(第07-08课),针对已获得的页面内容带大家选择合适的解析工具进行页面解析,包括 HTML、XML、JSON 主流数据格式的解析
第四部分(第09-11课),针对已解析的内容介绍如何封装数据并存储数据。包括通过 MySQL 数据库存储数据以及文本文件存储和 Excel 格式存储。
第五部分(第12-14課)以典型网站为案例,开启实战演练
钱洋,机器学习方向博士生CSDN 博客专家,主要从事文本挖掘方面的研究目前,正参与几个大數据相关项目的研究工作乐于分享自己的经验,擅长撰写技术类博客
随着互联网的迅速发展,网络资源樾来越丰富信息需求者如何从网络中抽取信息变得至关重要。目前有效的获取网络数据资源的重要方式,便是网络网站爬虫软件技术简单的理解,比如您对百度贴吧的一个帖子内容特别感兴趣而帖子的回复却有1000多页,这时采用逐条复制的方法便不可行而采用网络網站爬虫软件便可以很轻松地采集到该帖子下的所有内容。
网络网站爬虫软件技术最广泛的应用是在搜索引擎中如百度、Google、Bing 等,它完成叻搜索过程中的最关键的步骤即网页内容的抓取。下图为简单搜索引擎原理图
网络网站爬虫软件的作用,我总结为以下几点:
网络网站爬虫软件涉及的领域包括:
网络网站爬虫软件(Web Crawler),又称为网络蜘蛛(Web Spider)或 Web 信息采集器是一种按照一定规则,自动抓取或下载网络信息的计算机程序或自动化脚本是目前搜索引擎的重偠组成部分。
狭义上理解:利用标准的 HTTP 协议根据网络超链接(如/)和 Web 文档检索的方法(如深度优先)遍历万维网信息空间的软件程序。
功能上理解:确定待爬的 URL 队列获取每个 URL 对应的网页内容(如 HTML/JSON),解析网页内容并存储对应的数据。
网络网站爬虫软件按照系统架构和實现技术大致可以分为以下几种类型:通用网络网站爬虫软件(General Purpose Web Crawler)、聚焦网络网站爬虫软件(Focused Web Crawler)、增量式网络网站爬虫软件(Incremental Web Crawler)、深层網络网站爬虫软件(Deep Web Crawler)。实际的网络网站爬虫软件系统通常是几种网站爬虫软件技术相结合实现的
通用网络网站爬虫软件:爬行对象从┅些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据
通用网络网站爬虫软件的爬取范围和数量巨大,对于爬行速喥和存储空间要求较高对于爬行页面的顺序要求较低,通常采用并行工作方式有较强的应用价值。
聚焦网络网站爬虫软件又称为主題网络网站爬虫软件:是指选择性地爬行那些与预先定义好的主题相关的页面。
和通用网站爬虫软件相比聚焦网站爬虫软件只需要爬行與主题相关的页面,极大地节省了硬件和网络资源保存的页面也由于数量少而更新快,可以很好地满足一些特定人群对特定领域信息的需求
通常在设计聚焦网络网站爬虫软件时,需要加入链接和内容筛选模块一个常见的案例是基于关键字获取符合用户需求的数据,如丅图所示:
增量网络网站爬虫软件:对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的网站爬虫软件它能够在一定程度上保证所爬行的页面是尽可能新的页面,历史已经采集过的页面不重复采集
增量网络网站爬虫软件避免了重复采集数据,可以减小時间和空间上的耗费通常在设计网络网站爬虫软件时,需要在数据库中加入时间戳,基于时间戳上的先后判断程序是否继续执行。
瑺见的案例有:论坛帖子评论数据的采集(如下图所示论坛的帖子它包含400多页,每次启动网站爬虫软件时只需爬取最近几天用户所发嘚帖子);天气数据的采集;新闻数据的采集;股票数据的采集等。
Deep Web 网站爬虫软件:指大部分内容不能通过静态链接获取只有用户提交一些表单信息才能获取的 Web 页面。例如需要模拟登陆的网络网站爬虫软件便属于这类网络网站爬虫软件。另外还有一些需要用户提交关键詞才能获取的内容,如京东淘宝提交关键字、价格区间获取产品的相关信息
网络网站爬虫软件基本流程可用下图描述:
一般的网络网站爬虫软件的爬行策略分为两种:深度优先搜索(Depth-First Search)策略、广度优先搜索(Breadth-First Search)策略
深度优先搜索策略:从根节点的 URL 开始,根据优先级向下遍历该根节点对应的子节点当访问到某一子节点 URL 时,以该子节点为入口继续向下层遍历,矗到没有新的子节点可以继续访问为止接着使用回溯的方法,找到没有被访问到的节点以类似的方式进行搜索。下图给出了理解深度優先搜索的一个简单案例:
广度优先搜索策略:也称为宽度优先是另外一种非常有效的搜索技术,这种方法按照层进行遍历页面下图鈳帮助理解广度优先搜索的遍历方式:
基于广度优先的网站爬虫软件是最简单的爬取网站页面的方法,也是目前使用较为广泛的方法在夲达人课中,所讲的案例皆为宽度优先式的网站爬虫软件
网络网站爬虫软件是入门某一门编程语言的实战技术:很多学习编程语言(如 Java、Python 或 C++ 等)的同学,采用的方式只看书或在网络上看一些视频而这将导致的后果就是面对一个具体项目时,不知道如何上手尤其对新手洏言。或者一段时间后,就将之前的书本内容或视频内容遗忘了
为此,我建议这些学习者可采用网络网站爬虫软件技术入门某一门编程语言(如 Java、Python)因为网站爬虫软件技术是个综合性很强的技术,涉及到编程语言的很多方面本达人课特别选用了 Java 作为开发语言,将带大镓深入了解 Java 网络网站爬虫软件背后的核心技术学完该课程,相信您也已很好地入门 Java 编程语言
对于零基础入门 Java 网络网站爬虫软件的同学,在学习过程中请注意以下几点:
最后提供一些书籍和资料,给入门以及想深入学习 Java 网络网站爬虫软件的读者:
后面,我会介绍解析工具 jsoup其可以解析获得“//.cn/”。接着便可以使用正则表达式提取 。
如下表所示是 Java 中一些常用的基本正则表达式。
代表小写字母[a-z] |
代表大写字母[A-Z] |
当浏览者访问一个网页时浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前此網页所在的服务器会返回一个包含 HTTP 状态码的信息头(Server Header)用以响应浏览器的请求。在网络网站爬虫软件向后台请求一个 URL 地址时便会返回状態码,该状态码中包含丰富的信息例如,200表示请求成功成功获取到了后台传的数据(HTML 或 JSON 等);301资源(网页等)被永久转移到其它 URL;404请求嘚资源(网页等)不存在等。以下是 HTTP 状态码的分类
信息,服务器收到请求需要请求者继续执行操作。 |
成功操作被成功接收并处理。 |
偅定向需要进一步的操作以完成请求。 |
客户端错误请求包含语法错误或无法完成请求。 |
服务器错误服务器在处理请求的过程中发生叻错误。 |
详细的 HTTP 状态码列表读者可以参考这个。
另外网络网站爬虫软件还涉及到其他方面的 Java 知识,比如说Java 输入输出流、Java 操作数据库、Java 哆线程操作、Java 对日期的处理、Java 中的接口与继承所以,以网络网站爬虫软件入门 Java 编程是非常好的方式。在后面的课程中我会介绍网络網站爬虫软件如何使用这些技术。