文章目录

  • 前言
  • 一、爬虫是什么
  • 二、爬虫能用来干什么
  • 三、爬虫的分类
  • 四、爬虫的矛与盾
    • 1、反爬机制
    • 2、反反爬策略
    • 3、Robots.txt(君子协议)
  • 五、爬虫的基本流程
  • 六、第一个爬虫程序
    • 1.导入urlopen包
    • 2.打开网址,得到响应
    • 3.解码
    • 4.保存文件

前言

最近在学习之余迷上了看电视剧,但是想要看的电视剧又不在同一个APP里,全部充会员也不太现实,所以就想着简单入门一下爬虫,爬取自己想要看的电视剧,让自己的暑假过的更多姿多彩一点!


一、爬虫是什么

首先我们要先清楚爬虫是什么,在百度百科的词条中是这样解释的:

爬虫一般指网络爬虫。 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

浅显一点讲,爬虫就是自动获取网页内容的程序。 举个例子来说吧,我们在写论文或者有时候需要查阅资料的时候,直接百度搜索你会得到很多无用的信息,但是如果你使用爬虫通过关键字筛选,就可以筛掉大部分你不需要的信息,这样可以大大节省我们的时间,使我们的生活变得更快捷更高效。

二、爬虫能用来干什么

然后我们要明白爬虫可以用来干什么,他能给我们带来什么。我在网上看了好多篇关于爬虫的文章,对于爬虫的功能可以基本上概括为五个方面:

  • 获取网页
  • 提取信息
  • 保存数据
  • 调研
  • 刷流量和秒杀

对于获取网页和提取信息的话,可以说是比较耳熟吧,以前经常听到过,但对于后面三个方面的话,是基本没有了解的,所以在这儿也就不去过多的解释,等后面学到的时候我在来补充一下吧。

对于爬虫获取网页的功能,我们可以简单的理解为就是我们向网页的服务器发送网络请求,然后服务器返回给我们网页的源代码。

对于爬虫提取信息的功能,我们可以这样理解,就是我们初步获取到的网页源码中包含了很多杂乱无章的信息,这些信息中只有一小部分是我们需要的,所以我们要对源码进行进一步的筛选来得到我们最终想要的信息。(注意和前面第一点讲的是不太一样的,)

三、爬虫的分类

接下来我们可以了解一下爬虫的分类,根据使用场景,大致可以分为以下几种类型:

  • 通用网络爬虫
  • 聚焦网络爬虫
  • 增量式网络爬虫

通用爬虫功能强大,采集面广泛,通常用于搜索引擎,比如百度浏览器就是一个很大的爬虫程序。

聚焦爬虫功能相对单一,只针对特定网站的特定内容进行爬取,比如说去某个网站批量获取某些数据,这也是我们个人最常用的一种爬虫了。

增量式爬虫其实是聚焦爬虫的一个迭代爬虫,它只采集更新后的数据,对老数据是不采集,相当于一直存在并运行,只要有符合要求的数据更新了,就会自动爬取新的数据。

四、爬虫的矛与盾

1、反爬机制

反爬机制就是我们要访问的网站对于爬虫的一种限制,毕竟网站的开发者肯定想要访问网站的是人而不是一段代码。

2、反反爬策略

反反爬策略可以理解为我们对于网站反爬机制的一种抵制。(属实是道高一尺,魔高一丈)

3、Robots.txt(君子协议)

Robots.txt(君子协议),又称为“网络爬虫排除标准”,它的作用就是网站告诉你哪些东西能爬,哪些不能爬。

这个Robots协议去哪看?一般情况下直接在网站首页网址后面加/robots.txt就能查看,比如百度的Robots协议就在https://www.baidu.com/robots.txt ,可以看到里面有很多网址都规定了不能爬,比如Disallow:/shifen/ 说明当前Disallow:/shifen以及Disallow:/shifen下面的子目录网页均不能爬。

对于爬虫者来说,基本上就是口头协议,你违反了它你有可能会被追究法律责任,但不违反它,爬虫将是爬不到什么数据,所以平时双方都是睁一只闭一眼,不要太嚣张就可以了。

五、爬虫的基本流程

爬虫程序基本可以分为四步骤去编写:

  1. 发起请求
  2. 获取响应内容
  3. 解析内容
  4. 保存数据

六、第一个爬虫程序

前面我们对爬虫做了一下初步的了解,接下来我们自己动手去写一个爬虫小程序,爬取一下百度的网页信息。

1.导入urlopen包

from urllib.request import  urlopen

2.打开网址,得到响应

from urllib.request import urlopen       #导入urlopenurl = "http://www.baidu.com/"          #要爬取的网址
resp = urlopen(url)                    #打开网址并返回响应print(resp.read())                        #打印信息

可以看到打印出来的信息都是我们看不太懂的字符串信,所以接下来我们需要去解码,使这些信息变成我们可以看得懂的。

3.解码

解码这个地方又设计到了编码问题,不过学过一点Python的都知道,就不在解释了,我们需要utf-8 格式的信息,

from urllib.request import urlopen       #导入urlopenurl = "http://www.baidu.com/"          #要爬取的网址
resp = urlopen(url)                    #打开网址并返回响应print(resp.read().decode("utf-8"))      #打印解码信息

可以看到现在打印出来的信息已经是解码后的了。

4.保存文件

之后我们把爬取的信息存储下来。

from urllib.request import urlopen       #导入urlopenurl = "http://www.baidu.com/"          # 要爬取的网址
resp = urlopen(url)
with open("mybaidu.html", mode="w", encoding='utf-8') as f:   # 创建html文件并保存 ,encoding设置编码f.write(resp.read().decode("utf-8"))    # 读取网页的页面源代码print("over!")

可以看到**over!**保存成功

这是mybaidu.html文件中的内容

运行该文件,打开了一个和百度搜索完全一致的网页,说明我们爬取成功,第一个爬虫程序圆满写完。

爬虫学习——初步了解爬虫相关推荐

  1. 爬虫学习:基础爬虫案例实战

    爬虫学习:基础爬虫案例实战 文章目录 爬虫学习:基础爬虫案例实战 一.前言 二.案例实战 任务一:爬取列表页 任务二:爬取详细页 任务三:保存爬取数据 任务四:利用多进程提高效率 三.补充一点 四.最 ...

  2. Python爬虫学习系列教程-----------爬虫系列 你值的收藏

    静觅 » Python爬虫学习系列教程:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把 ...

  3. Python网络爬虫学习实战:爬虫快速入门

    很多同学私信问爬虫的相关教程,想了想,还是专门跟大家出些Python爬虫学习相关的教程,从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬加密的网站,还有爬虫拿不到数 ...

  4. python爬虫学习笔记-网络爬虫的三种数据解析方式

    爬虫的分类 1.通用爬虫:通用爬虫是搜索引擎(Baidu.Google.Yahoo等)"抓取系统"的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份 ...

  5. java爬虫学习_java网络爬虫基础学习(一)

    刚开始接触java爬虫,在这里是搜索网上做一些理论知识的总结 主要参考文章:gitchat 的java 网络爬虫基础入门,好像要付费,也不贵,感觉内容对新手很友好. 一.爬虫介绍 网络爬虫是一个自动提 ...

  6. python网络爬虫学习_python网络爬虫学习笔记

    介绍: 网络爬虫的名字非常有意思,英文名称web spider. 真得非常形象.蜘蛛结网为了获取食物,而我们的爬虫程序,也是为了获取网络上的资源. 这篇blog是本人学习过程中的记录.学习过程中,使用 ...

  7. 【爬虫学习6】爬虫自动获取并使用代理ip

    当同一ip短时间内多次链接同一网站,很可能导致ip被封,所以需要利用代理ip防止封禁. 代理ip可以通过百度很容易的获取 比如 西刺代理 但是,很明显我们用爬虫的人,不是会一个个自己复制粘贴的人,所以 ...

  8. python网络爬虫学习_python网络爬虫学习

    C#中指针的用法 (*) unsafe 和 fixed unsafe { ]; ; i < array.Length; i++) { array[i] = i; } fixed (int* p ...

  9. Python爬虫学习笔记_DAY_23_Python爬虫之bs4解析的基本使用介绍【Python爬虫】

    目录 I.bs4的介绍 II.bs4的安装 III.bs4的基本语法使用 p.s.高产量博主,点个关注

  10. Python爬虫学习笔记_DAY_32_Python爬虫之Excel表的读写【Python爬虫】

    p.s.高产量博主,点个关注

最新文章

  1. 01 http协议概念及工作流程
  2. 发个招聘的信息来激励自己
  3. OpenCASCADE:Android交叉编译 OCCT库
  4. 典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc
  5. P3899-[湖南集训]谈笑风生【主席树】
  6. java中的Attribute类_java培训技术ModelAttribute注解修饰POJO类型的入参
  7. Python制作AI贪吃蛇,很多很多细节、思路都写下来了!
  8. mysql基础事件_mysql 基础 事件(定时任务)
  9. mysql反掩码_Linux运维:文件目录管理
  10. DenseNet细节
  11. 手机网站与普通网站的不同
  12. Axure制作微信APP原型(二)登录注册模块
  13. LayUI复杂表头多一列
  14. 免费快递查询API接口
  15. python scatter设置随机颜色_python – Matplotlib Scatter plot根据列表中的值更改颜色...
  16. 桌面的文件不见了怎么找出来
  17. 投资人Tej Kohli将“风险慈善”理念注入3D打印仿生手臂
  18. Android拍照和相册+系统裁剪功能返回图片
  19. C++排序——奖学金
  20. openstack(Queen)搭建

热门文章

  1. 数值分析|二阶三点式Python编程
  2. js 11行代码实现ajax
  3. 解决you-get下载视频速度慢和下载MP4文件问题
  4. DuckDuckGo将与整合Apple Maps有更丰富的地图信息及隐私
  5. Character类的常用方法
  6. win10安装Oracle官方精简版客户端
  7. stm32f103r8t6的晶振频率_STM32F103R8T6
  8. php工程师外派,招聘兼职Php工程师|Php工程师外包-猿急送
  9. Java面试题目和答案
  10. Why it occurs this error [The JSON value could not be converted to System.Nullable]