当前位置: 首页 > news >正文

chapter1-爬虫那些事

背景

这个事情还要从Google或者百度说起。目前的搜索引擎,一般都拥有自己的一套网页检索算法,方便大家迅速的找到需要的网页。但是,当我们在使用各种搜索引擎的时候,是否思考过这样一个问题:搜索引擎是如何搜索到最新网页的信息,并且展现在搜索结果页上的呢?答案就是网页爬虫。

百度蜘蛛,是百度搜索引擎的一个自动程序。它的作用是访问收集整理互联网上的网页、图片、视频等内容,然后分门别类建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。 ——来源·百度百科《百度蜘蛛》

在最初,网页爬虫技术似乎就只是为搜索引擎服务的:一方面是搜索引擎的技术性需要,另一方面是当时的互联网信息,还没有这么庞大,最终的一点是,当时的用户对及时性服务还不是这么迫切。但是现在,网页爬虫早已挣脱了之前的技术局限性,被广泛的应用在各个领域中。例如前阵子大放光彩的“即刻”APP,其核心就是网页爬虫技术。

网页爬虫在不断发展中也产生了很多的新颖并且实用的框架,也从当初的特定编程语言,变成了现在的五花八门,各放异彩的编程语言。然而,在众多的编程语言中,Python无疑是最为重要,也是最为广泛的语言,这期达人课,我们就以Python 作为我们的主力编程语言,助力我们的“起飞”。

Python介绍

无论你之前学过什么语言,无论你是否了解Python,在正式学习本课程前,你需要告诉自己:Python作为高级编程语言,哪怕你没有编程的基础,你也可以高傲而且自豪地去使用它!

在这里插入图片描述

本门课程无意争辩到底哪门语言的效率最高,亦或是哪个编程语言是最好的。选择Python 作为本门课程的主力编程语言的理由主要有以下原因:

  • Python 简单易学,初学者在什么都不了解的情况下,都可以很好的上手;
  • Python 自带的封装接口,以及丰富的第三方库大大简化了我们的开发流程,一些看上去很难实现的功能,往往一行代码就能够搞定;
  • 基于Python 开发的网页爬虫框架众多,方便我们以后的深入学习。

Python 给自己的定义,就是一个“胶水”语言:哪里需要哪里用。或许和C++、Go等一些语言相比,Python 的运行速度很慢,但是需要指出的是,这里的“速度慢”,仅仅是相比较而言。例如,发送邮件,使用C++需要0.1秒,Python 则需要1秒。虽然速度相差10倍,但是作为日常开发而言,Python 的速度已经完全满足了我们的开发要求。

在这里插入图片描述

热度

Python 网络爬虫技术本身发展特别快,甚至可以说,网页爬虫技术随着Python 的发展而发展。从最初Python 自带的urllib 库,到现在流行的BeautifulSoup4、Selenium 等第三方框架。可以说,在网络爬虫的世界中,Python 一直处于”最强王者“的地位。
在这里插入图片描述

此图来自于百度指数(2018年4月23日)。可以发现的是,从2014年开始,Python 爬虫的搜索指数呈大幅上升的趋势,也同时应征了Python 在网页爬虫领域上的地位。

在这里插入图片描述

在全球知名的Github 网站上,搜索“爬虫”,有5077项使用Python 写的网页爬虫项目,比排名第二的java多出了将近3.5倍!

为什么学习网页爬虫
  • 从互联网技术发展的角度来看,越来越多的公司开始拥抱Python 技术栈。与此相对应的是,越来越多的公司也开始提供了类似Python 网页爬取工程师、分布式网页爬取架构师等工作职位。Python 爬虫技术已经成为互联网公司不可或缺的技术方向;
  • Python 网页爬虫所包含的技术栈,包含了Python 基础操作、HTML 结构分析、计算机网络特性等互联网公司正在使用的技术,学习Python 网页爬虫技术,可以很好地侧类旁通了解其他技术;
  • 网页爬虫技术在日常生活中有很大的用处,学习网页爬虫技术可以帮助我们更好的“享受生活”。

这个课程可以学到什么

早些时候由于个人兴趣原因研究并使用了Python,在使用时发现,国内关于Python 网页爬虫的教程虽然很多、内容丰富,但是往往涉及到特别多的前期准备,并不适合Python 新人上手。为了帮助一位学弟尽快的入手网页爬虫技术,我自己总结了自己的网页爬虫学习路线,结合他的实际应用,做出了一套适合新手入门学习的Python 网页爬虫教程。在这套教程的帮助下,学弟很快掌握了核心的技术栈,并且顺利的完成了我对他的毕业要求。

本期达人课,首先介绍Python 和网页的一些基础知识,带你快速的学习Python 的基础语法,再一起讨论网页爬虫框架的使用,如何通过邮件或者短信发送我们需要的信息,最后使用我们学到的技术实现一个在服务器运行的成绩通知短信系统,进行实战演练。

需要强调的是,Python 网页爬虫技术栈经过近几年的发展,可以说已经自成一脉。如果要将这些技术全部展现出来,不仅工作量巨大,而且涉及的技术对于新手也太过深奥。因此,本期达人课涉及的知识仅仅包含了Python 网页爬虫的一小部分,同时因为作者的能力有限,所包含的技术还较为浅显。如有不当,还希望各位多多见谅,提出修改建议。

适合阅读的人群

该系列文章适合以下人群阅读:

  • 刚学完Python 基础课程,希望做一个有趣的实战项目的人员
  • 对Python 网页爬虫感兴趣,希望尽快上手核心技术的开发人员
  • 希望做一个提高生活效率的在校学生或其他人员

在学习本课程之前,希望你有一些基础的开发技能,例如:独立的用C++写出一个从1加到10的控制台程序。

开发环境:

  • JetBrains PyCharm 2017.3.3 x64 (也可以使用其他IDE)
  • Python 3.5

使用到的软件:

  • MySQL
  • fidder4
  • Requests
  • BeautifulSoup 4

专栏列表

  • 关于网页爬取那些事儿
  • Python 极速教程
  • 网页基础知识一点通
  • 爬取你的第一个网页
  • 使用网页爬虫利器—Requests
  • 让BeautifulSoup4 提高你的效率
  • 让MySQL帮你保存指定的信息
  • 使用Python 的邮件模块发送信息
  • 使用短信接口发送信息
  • “天上的馅饼”:免费的短信通知方式
  • 让你的系统全天候为你服务
  • 让你拥有“火眼金睛”的fiddr4和其他工具
  • 实战成绩通知短信系统(上)
  • 实战成绩通知短信系统(上)
  • 常见的反爬虫和反反爬虫技术
  • 项目总结

相关文章:

  • JNPF低代码开发平台总体架构介绍
  • k8s 集群搭建的一些坑
  • 小程序使用echarts图表-雷达图
  • 给APM固定翼增加相机
  • 水塘抽样算法
  • stm32 - GPIO高级用法
  • 在WIN从零开始在QMUE上添加一块自己的开发板(一)
  • maven导入无法拉取所需依赖
  • Spring Security
  • 【Spring Boot 3】【Redis】消息发布及订阅
  • oracleFUNCTION,PROCEDURE和PACKAGE区别
  • LINUX常用工具之sudo权限控制
  • HarmonyOS 应用开发入门
  • 基于 UniAPP 社区论坛项目多端开发实战
  • 信号处理专题设计-基于边缘检测的数字图像分类识别
  • 【刷算法】求1+2+3+...+n
  • Create React App 使用
  • dva中组件的懒加载
  • Elasticsearch 参考指南(升级前重新索引)
  • Hibernate最全面试题
  • Node + FFmpeg 实现Canvas动画导出视频
  • PhantomJS 安装
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue-loader 源码解析系列之 selector
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​一些不规范的GTID使用场景
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #职场发展#其他
  • $.ajax()方法详解
  • ()、[]、{}、(())、[[]]命令替换
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (接口自动化)Python3操作MySQL数据库
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (全注解开发)学习Spring-MVC的第三天
  • (十六)Flask之蓝图
  • (一)认识微服务
  • (原創) 未来三学期想要修的课 (日記)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)LINQ之路
  • (转)大道至简,职场上做人做事做管理
  • (转载)Linux 多线程条件变量同步
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 中的路径问题
  • .Net 垃圾回收机制原理(二)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET企业级应用架构设计系列之结尾篇
  • @EnableWebMvc介绍和使用详细demo
  • [ NOI 2001 ] 食物链
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • []指针