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和其他工具
  • 实战成绩通知短信系统(上)
  • 实战成绩通知短信系统(上)
  • 常见的反爬虫和反反爬虫技术
  • 项目总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/336769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux问题 apt-get install时 无法解析域名“cn.archive.ubuntu.com”

问题描述: 在安装程序时会出现无法解析域名的错误 解决办法: 1、编辑文件 sudo vim /etc/resolv.conf 2、在最后加上(按键 i 进入编辑模式) nameserver 8.8.8.8 3、保存退出(:wq)

【Vue】使用 Vuex 作为状态管理

【Vue】使用 Vuex 作为状态管理 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它使用单一状态树,这意味着这个对象包含了全部的应用层级状态,并且以一种相对集中的方式存在。这也意味着,通常单个项目中只有一个 Vuex store。Vue…

IDEA在重启springboot项目时没有自动重新build

IDEA在重启springboot项目时没有自动重新build 问题描述 当项目里面某些依赖或者插件更新了,target的class文件没有找到,导致不是我们需要的效果。 只能手动的清理target文件,麻烦得很 , 单体项目还好说,一次清理就…

Transformer|1.4 CNN遇到的问题与窘境

文章目录 CNN遇到的问题与窘境transformer 的优势 CNN遇到的问题与窘境 判断一个人是否为美人,既要看她各个五官,也要看她各个五官占的比例和协调。 既要照顾好局部信息,也要照顾好全局信息。 局部信息用小的感受野进行感受,而全局…

KKVIEW远程控制软件介绍

KKVIEW是一款全功能远程控制软件,可以随时随地访问家里或公司设备。KKVIEW,连接自由,KKVIEW旨在帮助用户在远程技术支持、远程办公、远程教育等领域便利的开展工作。 [主要功能] 远程桌面 一键远程显示远程桌面,一键开启远程控制&#xff0…

单元测试体系集成

JUnit 是一个基于 Java 语言的单元测试框架,可以用它来编写单元测试用例,用途广泛能被各种工具支持,每个 JUnit 单元测试相对独立,运行方便,结果的展示清晰;也可以把它与持续集成工具 Jenkins 进行集成&…

《WebKit 技术内幕》之五(4): HTML解释器和DOM 模型

4 影子(Shadow)DOM 影子 DOM 是一个新东西,主要解决了一个文档中可能需要大量交互的多个 DOM 树建立和维护各自的功能边界的问题。 4.1 什么是影子 DOM 当开发这样一个用户界面的控件——这个控件可能由一些 HTML 的标签元素…

Rust - 初识结构体

struct,或者 structure,是一个自定义数据类型,允许命名和包装多个相关的值,从而形成一个有意义的组合。如果你熟悉一门面向对象语言,struct 就像对象中的数据属性。 定义并实例化结构体 结构体和之前介绍过的元组类似…

5 python快速上手

数据类型(上) 1.整型1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 长整型1.5.2 地板除 2. 布尔类型2.1 定义2.2 独有功能2.3 公共功能2.4 转换2.5 其他2.5.1 做条件自动转换 3.字符串类型3.1 定义3.2 独有功能(18/48)练…

Minio文件分片上传实现

资源准备 MacM1Pro 安装Parallels19.1.0请参考 https://blog.csdn.net/qq_41594280/article/details/135420241 MacM1Pro Parallels安装CentOS7.9请参考 https://blog.csdn.net/qq_41594280/article/details/135420461 部署Minio和整合SpringBoot请参考 https://blog.csdn.net/…

stm32 FOC系列 直流有刷控制原理

1、直流有刷驱动板 使用三极管搭建的简易 H 桥电路,如图 5.3.1 所示: 图 5.3.1 是使用三极管搭建的简易 H 桥电路,其中 MOTOR 表示直流有刷电机, Q1、 Q2、 Q3 和 Q4 为 4 个三极管,其中 Q1 和 Q3 接在了电源正极&…

Windows如何部署TortoiseSVN客户端

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

GitHub图床TyporaPicGo相关配置

本文作者: slience_me 文章目录 GitHub图床&Typora&PicGo相关配置1. Github配置2. picGo配置3. Typora配置 GitHub图床&Typora&PicGo相关配置 关于Typora旧版的百度网盘下载路径 链接:https://pan.baidu.com/s/12mq-dMqWnRRoreGo4MTbKg?…

DolphinDB学习(1):数据库的增删查与常用操作

下载并配置好DolphinDB,同时添加vscode的插件,我们就在vscode上进行操作 创建xxx.dos文件后,就会被识别为DolphinDB的运行文件,非常方便 文章目录 登录数据库的操作创建数据库查找与删除数据库 示例 登录 如果是vscode&#xff…

微信公众号服务器配置启用, Java示例

微信公众号接入指南文档https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 在微信公众号的服务器配置中,首先需要编写Java代码来处理微信服务器的验证请求。以下是Java示例代码,然后我将为你提供启用服务器配置…

鸿蒙harmony--数据库sqlite详解

今天是1月20号星期六,早安,岁末大寒至,静后春归来。愿他乡故人,漂泊有归宿,前程有奔赴,愿人间不寒,温暖常伴,诸事顺利,喜乐长安。 目录 一,定义 二&#xff…

华为FusionStorage Block、OceanStor 100D、OceanStor pacific的区别

华为FusionStorage Block、OceanStor 100D、OceanStor pacific的区别? 华为块存储到底是叫什么呢? 有接触过华为块存储产品的小伙伴肯定都有疑惑,在FusionStorage 、FusionStorage Block、OceanStor 100D、OceanStor pacific等等的名词中&a…

mysql函数group_concat()返回结果不全

目录 一、场景二、原因三、排查1、查看group_concat_max_len配置2、修改group_concat_max_len配置a) 如果不方便重启mysql,可以通过以下命令进行配置修改b) 修改mysql配置文件,永久生效 一、场景 mysql使用group_concat()函数拼接返回字段时&#xff0c…

Shell 脚本实现自动启动程序、日志管理和定时任务监控

简介 本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。 脚本编写 vim start_program.sh#!/bin/bas…

[202401C]巨人之力的题解

原题描述: 时间限制: 1000ms 空间限制: 262144kb 题目描述 两千多年以前,身为艾尔迪亚人的尤弥尔意外获得巨人之力,并且创造了九大巨人,其无以匹敌的力量使得整个世界都陷入了无尽的战乱纷争,艾尔迪亚之外的人类过…