1.1 认识爬虫

网络爬虫作为收集互联网数据的一种常用工具,近年来随着互联网的发展而快速崛起。使用网络爬虫爬取网络数据首先需要了解网络爬虫的概念和主要分类,各类爬虫的系统结构,运作方式,常用的爬取策略,以及主要的应用场景,同时,出于版权和数据安全的考虑,还需要了解目前有关爬虫应用的合法性及爬取网站时需要遵守的协议。

网络爬虫也被称为网络蜘蛛,网络机器人,是一个自动下载网页的计算机程序或者自动化脚本。网络爬虫就像一只蜘蛛一样在互联网上爬行,它以Url访问网络地址作为起点,沿着地址的请求路线进行爬行,下载每一个Url所指向请求的网址,分析页面内容的Url并记录下每个已经爬行过的Url,如此反复,知道Url队列为空或者满足设定的终止条件位置,最终达到遍历Web的目的,爬取想要的内容。

网络爬虫按照其系统结构和运作原理,大致可以分为4种:通用网络爬虫,聚焦网络爬虫,增量式网络爬虫,深层网络爬虫。

1.通用网络爬虫:该类爬虫比较适合为搜索引擎搜索广泛的主题,常用的爬取策略可分为深度优先策略和广度优先策略。

2.聚焦网络爬虫:根据指定目标来爬取数据,大致分为4种:基于内容评价的爬取策略,基于链接结果评价的爬取策略,基于增强学习的爬取策略,基于语境图的爬取策略

3.增量式网络爬虫:只对已下载网页采取增量式更新或者爬取新产生的及已经发生变化的网页。没有变化的网页不进行爬取,能有效的减少时间和存储空间上的浪费,但该算法的复杂度和实现难度更高。常用方法分为统一更新法,个体更新法,基于分类的更新法。

4.深层网络爬虫:Web页面分为表层页面和深层页面,表层页面是指以超链接可以访问的静态页面,深层页面是指通过表单提交数据后才能访问的页面,例如登录成功后才能看到的页面,但现实社会中几乎所有的网站深层页面比表层页面多几百倍。深度网络爬虫爬取数据过程中,最重要的部分就是表单填写,包含两种类型:基于领域知识的表单填写,基于网页结构分析的表单填写。

爬虫的合法性与robot.txt协议:在网站允许的情况下,将爬取的数据用于个人使用或者科学研究,但个人隐私数据以及明确禁止他人访问的数据是不允许爬取,触犯法律,当爬取网站数据的时候需要遵守网站所有者的robot.txt协议。

1.2 认识反爬虫

网站所有者并不欢迎爬虫,往往会针对爬虫做出限制措施。爬虫制作者需要了解网站所有者反爬虫的原因和想要通过爬虫达成的目的,并针对网站常用的爬虫检测方法和反爬虫手段,制定相应的爬取策略来规避网站的检测和限制。

网站所有者从所有网站来访者中识别出爬虫并对其做出相应处理(通常为封禁IP)的过程称为反爬虫。对于网站所有者而言,爬虫并不是一个受欢迎的客人。爬虫会消耗大量的服务器资源,影响服务器的稳定性,增加运营的网络成本。

1. 通过User-Agent校验反爬

浏览器在发送请求的时候,会附带一部分浏览器及当前系统环境的参数给服务器,服务器会通过User-Agent的值来区分不同的浏览器。

2. 通过访问频度反爬

普通用户通过浏览器访问网站的速度相对爬虫而言要慢的多,所以不少网站会利用这一点对访问频度设定一个阈值,如果一个IP单位时间内访问频度超过了预设的阈值,将会对该IP做出访问限制。

通常需要经过验证码验证后才能继续正常访问,严重的甚至会禁止该IP访问网站一段时间。

3. 通过验证码校验反爬

有部分网站不论访问频度如何,一定要来访者输入验证码才能继续操作。例如12306网站,不管是登陆还是购票,全部需要验证验证码,与访问频度无关。

4. 通过变换网页结构反爬

一些社交网站常常会更换网页结构,而爬虫大部分情况下都需要通过网页结构来解析需要的数据,所以这种做法也能起到反爬虫的作用。在网页结构变换后,爬虫往往无法在原本的网页位置找到原本需要的内容。

5. 通过账号权限反爬

部分网站需要登录才能继续操作,这部分网站虽然并不是为了反爬虫才要求登录操作,但确实起到了反爬虫的作用。

例如微博查看评论就需要登录账号。

爬取策略制定

针对之前介绍的常见的反爬虫手段,可以制定对应的爬取策略如下。

发送模拟User-Agent:通过发送模拟User-Agent来通过检验,将要发送至网站服务器的请求的User-Agent值伪装成一般用户登录网站时使用的User-Agent值。

调整访问频度:通过备用IP测试网站的访问频率阈值,然后设置访问频率比阈值略低。这种方法既能保证爬取的稳定性,又能使效率又不至于过于低下。

通过验证码校验:使用IP代理,更换爬虫IP;通过算法识别验证码;使用cookie绕过验证码。

应对网站结构变化:只爬取一次时,在其网站结构调整之前,将需要的数据全部爬取下来;使用脚本对网站结构进行监测,结构变化时,发出告警并及时停止爬虫。

通过账号权限限制:通过模拟登录的方法进行规避,往往也需要通过验证码检验。

通过代理IP规避:通过代理进行IP更换可有效规避网站检测,需注意公用IP代理池是 网站重点监测对象。

1.3 配置Python爬虫环境

目前Python有着形形色色的爬虫相关库,按照库的功能,整理如下。

类型 库名 简介
通用 urllib Python内置的HTTP请求库,提供一系列用于操作URL的功能
requests 基于urllib,采用Apache2 Licensed开源协议的HTTP库
urllib 3 提供很多Python标准库里所没有的重要特性:线程安全,连接池,客户端SSL/TLS验证,文件分部编码上传,协助处理重复请求和HTTP重定位,支持压缩编码,支持HTTP和SOCKS代理,100%测试覆盖率
框架 scrapy 一个为了爬取网站数据,提取结构性数据而编写的应用框架
HTML/XML**解析器** lxml C语言编写高效HTML/XML处理库。支持XPath
BeautifulSoup 4 纯Python实现的HTML/XML处理库,效率相对较低

记住在使用pip下载安装第三方库时,一定需要将python安装路径下的Scripts目录添加至环境变量中

小结

本章对爬虫及反爬虫进行了一个基本概述,同时简要介绍了Python爬虫环境,对本章内容做小结如下。

爬虫是一种可以自动下载网页的脚本或计算机工具,可大致分为4种运作原理,用于个人或学术研究的爬虫通常是合法的。

反爬虫为网站针对爬虫进行检测和限制的过程,爬虫需针对反爬虫手段制定对应的爬取策略。

Python常用的爬虫库包含urllib、requests、urllib 3、scrapy、lxml和BeautifulSoup 4等库,通常需要配套数据库用于存储爬取的数据。

【Python爬虫】第一课 Python爬虫环境与爬虫简介相关推荐

  1. Python网络爬虫第一课----Python网络爬虫基础《http和https协议》

    Python网络爬虫第一课----Python网络爬虫基础<http和https协议> 一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protoc ...

  2. Python基础第一课

    全部都重要 github博客传送门 博客园传送门 Python基础课 如何下载安装Python Python基础第一课 Python基础第二课 Python基础第三课 Python基础第四课 没了. ...

  3. python 论坛搭建_Python第一课 - python的开发环境的搭建

    Python第一课 - python的开发环境的搭建 一.下载安装Python的安装包 打开官网 https://www.python.org/downloads/windows/ 下载中心 [标记为 ...

  4. python学习第一课——环境配置+比着葫芦画个瓢

    python学习第一课 1. python概览 2. python的运行 3. python的变量.类型与存储 4. 对*.py文件的运行与存储 5. 终端切换路径及目录显示 6. 踩着巨人的肩膀创新 ...

  5. python编程入门第一课_python入门前的第一课 python怎样入门

    人工智能时代的到来,很多文章说这么一句:"不会python,就不要说自己是程序员",这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必 ...

  6. python学习第一课

    python学习第一课 课前回顾 1.请求类型: 2.传参类型: 3.postman断言.参数化.多接口参数依赖 接口文档 这个接口是做什么的?URL请求类型参数--> 如何传递参数params ...

  7. 爬虫第一弹:安居客房地产数据爬虫

    爬虫第一弹:安居客房地产数据爬虫  一.功能分析: 1.我们要爬取的安居客南昌新房的420个楼盘的信息,每个楼盘涵盖'楼盘名称' '楼盘特点' '参考单价' '物业类型' '开发商' '区域位置' ' ...

  8. 【PHP】走进 PHP 第一课 PHP 介绍 环境安装

    [PHP]✔️走进 PHP✔️ 第一课 PHP 介绍 & 环境安装 概述 PHP PHP 下载 PhpStorm 安装 环境配置 概述 从今天开始, 小白我将带领大家一起来学习一下 PHP 的 ...

  9. Python入门——第一章 python编程基础

    Python入门 文章目录 Python入门 第一章 python编程基础 1.1 基本输入输出 1.1.1使用print()函数进行简单输出 chr()函数 print()输出到指定文件 print ...

最新文章

  1. Summary of the Academic English Class
  2. wxWidgets:wxWebView 示例
  3. 物联网、工业互联网大数据的特点
  4. 基于任务编程_如何理解任何编程任务
  5. [每天一个知识点]31-乱七八糟-如何判断预言有效
  6. VMWare安装Ubuntu 16.04
  7. DRM之Widevine学习入门
  8. Nature拟推出机器智能在线期刊Nature Machine Intelligence
  9. Word中有些空行无法删除,我是这样解决的.............
  10. oracle数据透明加密,使用ORACLE 透明数据加密 TDE
  11. Python中的多线程是假的多线程
  12. 敏捷转型行动笔记:用户故事实践
  13. Lucene .Net + 盘古分词 学习资料
  14. pure virtual method called terminate called without an active exception Abor
  15. 在python中设置密码登录_如何从python脚本在linux中设置用户密码?
  16. 压力测试中 4 个常见面试题总结
  17. PPT转成Word文档的四种方法
  18. Flutter IOS 新建打包发布全流程 2023 版
  19. 【汇智学堂】-JS菜鸟版过河小游戏(之七---上船/下船/过河/返程)
  20. [附源码]Python计算机毕业设计大学生规划平台

热门文章

  1. 【Linux】Rsync基于SSH认证的使用(rsync 命令属于1 v 4 的命令、rsync常用参数基本用法)
  2. mysql---创建学生表
  3. 机器学习之经典算法(十一) 条件随机场
  4. html怎么控制top值为0,关于vue滚动scrollTop 赋值一直为0问题
  5. 无力吐槽的废酱的几个问题
  6. Android的StrictMode
  7. AI之NLP:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
  8. [284]python使用execjs执行js
  9. linux让前台程序脱离终端运行
  10. 算法(一) 算法初步