作者:荣仔!最靓的仔!

专栏地址 :http://suo.im/5Rh1z1

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

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标记的名字都能准确地描述其用途以及所标注内容的类型,比如:

下面给出的是通常的网页格式:

html>

标题

HTML的标记包含在一对尖括号(<>)之间,以便与普通文本明确区分开。第一个点括号()表示结束。

注:由于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数据爬取的知识海洋吧!

未完,待续......

python爬虫爬取一次数据多长时间_「Python爬虫系列讲解」1. 网络数据爬取概述相关推荐

  1. python精通多长时间_学Python需要多久能学会?精通Python需要多长时间?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 严格意思上的说,Python其实是一个脚本语言,编程语言多种多样,但是却有开源和闭源之分,Python就是一种开放核心源代码编程语言,其开发代码的效率非常 ...

  2. 「Python爬虫系列讲解」七、基于数据库存储的 BeautifulSoup 招聘爬取

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  3. 「Python爬虫系列讲解」十二、基于图片爬取的 Selenium 爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  4. 「Python爬虫系列讲解」十四、基于开发者工具 Network 的数据抓包技术

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  5. 「Python爬虫系列讲解」八、Selenium 技术

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  6. 「Python爬虫系列讲解」三、正则表达式爬虫之牛刀小试

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  7. 「Python爬虫系列讲解」十一、基于登录分析的 Selenium 微博爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

  8. python数据科学实践指南_《Python数据科学实践指南》——导读-阿里云开发者社区...

    前 言 为什么要写这本书 我接触大数据技术的时间算是比较早的,四五年前当大数据这个词火遍互联网的时候,我就已经在实验室里学习编程及算法的知识.那个时候我一心想要做学术,每天阅读大量的英文文献,主要兴趣 ...

  9. 编程没基础学python多长时间--零基础学Python,从入门到精通需要多长时间

    求一份小甲鱼的<零基础入门学习Python>视频教程 评论 本系列教程面向础的同学,是一个深入浅通俗易懂的Python3视频教程. 适群 完全零基础入门,不需要任何前置知识. 教程概述 前 ...

  10. mysql数据字典生成器_「python技术」列表推导、生成器表达式和字典推导的差异及其示例

    #开往春天新创作大赛# 前言 列表推导式构建列表的快捷方式,而生成器表达式则可以用来创建其他任何类型的序列.自python2.7以后,列表推导和生成器表达式的概念就应用到了字典上,所以就有了字典推导, ...

最新文章

  1. Hadoop集群(第6期)_WordCount运行详解
  2. 【shell】shell编程(一)-入门
  3. CSU - 2059 Water Problem(Z线分割平面)
  4. final cut pro编辑的时候
  5. 自然语言处理领域的两种创新观念
  6. redis基本类型和使用
  7. 用触发器实现表的同步操作
  8. mysql 收货地址表_会员收货地址 - 数据库设计 - 数据库表结构 - 果创云
  9. win10 两台电脑之间共享桌面及共享文件(手把手教学)
  10. kindle升级失败变砖(卡大树)维修步骤
  11. 练习编程思维的小游戏
  12. lingo的目标规划
  13. 可三维成像(16,32线等)激光雷达调研
  14. 苹果手机声音突然变小是怎么回事_苹果手机听筒声音小怎么回事?
  15. TFT液晶屏使用自建的英文字库
  16. struct和union的区别和存储方式
  17. 关于微服务中用户身份认证的一点愚见
  18. 等额本金和等额本息的区别
  19. rk3288 ddr 开发指南
  20. 学生成绩管理系统(xhh)

热门文章

  1. Spring with multiple transaction managers
  2. Anonymous推荐软件含有恶意***程序
  3. windows XP小技巧
  4. 关于坑爹的编解码问题
  5. Nagios 3 Centreon 2 RC5 安装与配置(1)
  6. Android Cursor浅析
  7. Navicat Premium之MySQL客户端的下载、安装和使用(博主推荐)
  8. 左右c++与java中国的垃圾问题的分析与解决
  9. iOS开发学习记录【整理】
  10. 可空类型 (C# 编程指南)