python爬虫入门

一、相关原理

1.什么是爬虫

  • 网络爬虫英文名为Web Crawler或Web Spider。
  • 它是一种自动浏览网页并采集所需要信息的程序。
  • 爬虫从初始网页癿URL开始, 获取初始网页上癿URL; 在抓取网页癿过程中, 不断从当前页面上抽取新癿URL放入队列; 直到满足系统给定的停止条件。
  • 它可以为搜索引擎从互联网中下载网页数据,是搜索引擎的重要组成部分。
    在这里插入图片描述

互联网示意图:
在这里插入图片描述

  • 每个节点都是一个网页
  • 每条都是一个超链接
  • 网络爬虫就是从这样一个网络图中抓取感兴趣的内容

网页的抓取策略:
通常来说,网页的抓取策略可以分为以下三类:
• 广度优先
• 最佳优先
• 深度优先
深度优先在很多情况下会寻致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。

  • 广度优先搜索策略是指在抓取过程中,在完成当前层次得搜索后,才进行下一层次的搜索。特点是,算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。
  • 最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它叧访问经过网页分析算法预测为“有用”的网页。特点是,最佳优先策略是一种局部最优搜索算法,在爬虫抓取路径上的很多相关网页可能被忽略。
  • 深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个再进入。如此一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条路线。 特点是,深度优先策略算法设计较为简单,但每深入一层,网页价值和PageRank都会相应地有所下降,相对与其他两种策略而言,此种策略很少被使用。

2.网络爬虫的分类

通常来说,网络爬虫可以分为以下几类:
• 通用网络爬虫
• 增量爬虫
• 垂直爬虫
• Deep Web 爬虫

  • 通用网络爬虫又称全网爬虫( Scalable Web Crawler)爬行对象从一些种子URL扩充到整个Web,主要为门站点搜索引擎和大型Web服务提供商采集数据。通用网络爬虫根据预先设定的一个或若干初始种子URL开始,以此获得初始网页上的URL列表,在爬行过程中不断从URL队列中获一个的URL,进而访问并下载该页面。
  • 增量网络爬虫( Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在定程度上保证所爬行的页面是尽可能新的页面。增量式爬虫有两个目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。通用的商业搜索引擎如谷歌,百度等,本质上都属于增量爬虫。
  • 垂直爬虫,又称为聚焦网络爬虫( Focused Crawler),或主题网络爬虫( Topical Crawler)。是指选择性地爬取那些与预先定义好的主题相关页面的网络爬虫。如Email地址,电子书,商品价格等。爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。
  • Deep Web爬虫 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。Deep Web 爬虫爬行过程中最重要部分就是表单填写,包含两种类型:基于领域知识的表单填写,基亍网页结构分析的表单填写。

3.网络爬虫的使用范围

  • 作为搜索引擎的网页搜集器,抓取整个互联网,如谷歌,百度等;
  • 作为垂直搜索引擎,抓取特定主题信息,如视频网站,招聘网站等。
  • 作为测试网站前端的检测工具,用来评价网站前端代码的健壮性。
  • 作为数据分析流程中的关键一步-数据采集。
  • 对数据分析师来说,网络爬虫是进行数据采集的重要技术工具。

Robots协议
又称机器人协议或爬虫协议, 该协议就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,网络爬虫据此“自觉地”抓取或者不抓取该网页内容。自推出以来 Robots协议已成为网站保护自有敏感数据和网民隐私的国际惯例。

  • robots协议通过robots.txt实现
  • robots.txt文件应该放置在网站根目录下。
  • 当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。

4.爬虫的基本架构

网络爬虫通常包含四个模块:
• URL管理模块
• 下载模块
• 解析模块
• 存储模块
爬虫框架:
在这里插入图片描述

二、代码实现

1.环境配置

打开Anaconda Prompt,创建虚拟环境

conda create -n crawler python=3.7

crawler为虚拟环境名称,python=3.7为python版本。
激活环境:

activate crawler

使用pip或conda命令下载将会用到的包:

pip install requests  
pip install beautifulsoup4
pip install tqdm
pip install csv

2.对南阳理工学院ACM题目网站练习题目数据的抓取和保存

2.1 分析网址

目标地址: http://www.51mxd.cn/
在这里插入图片描述

查看源代码:
在这里插入图片描述

找到目标爬取内容:
在这里插入图片描述

在其中Ctrl + F 搜索该页的某一个题目(此处以最大和为例):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值