首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

爬虫饲养入门指南

本文原作者为 ArchiPython 群友,Python 工作者:小男人,与Vctcn93一起合作修订后发布,本文版权为二者共有,授权发布于 ArchiPython 平台。

爬虫是什么

进入大数据时代以来,我想每个人都或多或少的听说过爬虫这个概念,那么爬虫究竟是个什么东西呢?

,是高效的信息采集利器,一种自动在互联网上摘取指定内容的程序或者脚本。

它也被称为网络蜘蛛,如果将互联网比作一张巨大的蜘蛛网,爬虫便是这个网上的蜘蛛,它能在这个网上任意游走,它能在这个网上灵活地捕捉猎物 -- 即数据,所以爬虫在数据行业中,处于十分上游的位置,是 的手段之一,也是许多数据行业的基石,更是大数据时代的程序员必备的基本生存技能之一。

爬虫的工作原理

爬虫其本质,是对人类行为的模拟,所以想要弄清楚爬虫的工作原理,你必须要知道你打开网页时都发生了一些什么。

当我去我最爱的参考消息官网官网查看新闻时:

我将在浏览器输入网址: ,并且按下回车,我便给服务器发送了一条包含着我这台计算机信息的

当服务器收到我的 后,便会把相应的网页数据结构,传回到我的电脑上

我的浏览器会把收到的网页数据结构,排版为常规网页的样子

这也是当你打开网页时,网络与计算机之间发生的故事。

爬虫,便是对这一行为的简单模拟:

它将模仿你发送请求,并且解析收到的数据格式,最后捕捉到你要的信息

人类打开网址,查找信息,原始又低效;一只自动化的爬虫,其获取信息的效率与准确性,是人类的千万倍。这便是越来越多的人都开始饲养起爬虫的原因。

爬虫知识 Plus

虽然爬虫的工作原理很简单,但是对知识储备的要求是十分巨大的,无论是网页的知识、还是通信的知识、甚至于数据结构与处理的知识,你都需要掌握,但这却不是培育爬虫最高的技术门槛。

由于爬虫的效率高、访问频繁、占用资源大、使用人数多,往往会给网络服务器带来巨大的负担,甚至会把不少容量不够的服务器搞到宕机(比如前两日我在练手的时候便把某好友的网站爬到无法访问),所以诸多网站的运维人员,对爬虫都是深恶痛绝的。他们为了防止爬虫,很多网站都有一定的 机制,用以阻挡大量爬虫的侵扰,给爬虫养育者制造各种各样的麻烦。

所以,爬虫的难点并不在爬虫本身,其难点在于如何 、 ,如何拟人得逼真,如何效率最大化。

网站的运营人员与爬虫信息工作者之间,正在打着一场无休止的浩瀚战争,双方都把 当作自己的唯一目的。双方都是迫于对方的压力,以至于在这场战争中,每天都有新的技术出台、新的手段问世,正所谓 ,双方一并构成了互联网动态发展的壮观推进线。

不过,爬虫在某种程度上来说是一种每日游走在刀锋上的灰产 -- 万一爬到了什么不该爬的东西,玩塌了什么不该玩的站,轻则封了你的 IP,重则蹲几年班房。

所以,想要饲养爬虫的各位,且行且珍惜。

你所需要的爬虫知识

高端的爬虫需要海量的经验与技术储备,难以速成。但作为入门的你,仅仅需要掌握以下几个关键的知识点,便可拥有你自己的爬虫:

URL

-- Uniform Resource Locator,统一资源定位符,即口语的网址。

比如参考消息的官网网址 就是一个 URL,你可以通过类似这样的 URL,访问世界上的各个网站。

GET

-- 将请求参数包含在 URL 链接中的请求方式。

比如你在参考消息官网点击 ,就能进入到 的主页;

此时你的 URL 中便包含了你请求的参数 ;

同样,你在下方试图翻页的时候,你的 URL 也会新增加你请求的参数

类似这种把具体请求参数反映在链接中的请求方式,便被称为,所以你修改 URL 中的参数,也能得到不同的结果。

HEADER

,它承载了本次请求发送者 -- 即你的计算机(或浏览器)具体的信息。

只有把 发给服务器,告诉服务器你是谁,你要什么,服务器才能正确的回答你。

你可以在浏览器中按 -> -> 中,查看到自己的请求头信息。爬虫通过请求头,模仿你向服务器发送请求。

那一大段信息,就是你的请求头。

HTML

-- Hyper Text Markup Language,超文本标记语言,是一种用以描述网页的标记语言,也是网页最原始的样子。

它也是一种数据格式,通过不同的 ,让数据处于正确的位置,浏览器做出正确的反应,最终构成一个人类可读的网页。

你可以按 -> ,看到网页本来的面貌 -- > 即网页源码。

爬虫能通过解读网页的原始结构,得到你所需要的数据。

案例设计

由于建筑类网站大多经不起爬(服务器不堪一击),大型网站的反爬手段又过于高超(不适合入门练手),故设计初阶任务为:

爬取太平洋电脑网(https://www.pconline.com.cn/)的厨卫家电类的评测(https://family.pconline.com.cn/cwjd/review/)文章,并保存为 Word 文件

库和工具:

浏览器

-- 用以向网站发送请求

-- 用以解析 HTML

-- 用以写入 Word

request 库安装

lxml 库安装

docx 库安装

基础流程

要完成这样一只爬虫,我们需要完成以下三个基本步骤:

获得文章目录页面下所有文章的链接地址

根据这些链接地址爬取所有文章

将文章导出并保存起来

API 设计时,获取目标 - 执行 - 导出 三步必须相互独立,逻辑清晰,随后,将以上三步用类包装起来并写成代码,则可以完成基础的 :

我们要做的,就是写出一个爬虫类,让它能够通过我们设计的这三个命令(步骤),成功的获得我们需要的文章。

细部解析

如何得到页面下所有文章的链接?

打开相关的测评页面(https://family.pconline.com.cn/cwjd/review/ )

点击任意一个文章标题,都能跳转入该文章的链接 -- 即每一个文章标题处,都藏有文章的真实链接地址

按 进入开发者工具,点击图片中 符号所在位置的工具,它能让你知道你鼠标所处位置的原件,在网页源码的位置

如鼠标在第一篇文章位置时,该文章部分内容会高亮,同时该标签下所有内容,也会在源码区显示(即位置下)

解析标签下的内容,就能得到该文章的链接地址该页面的所有文章,均采用的如此布局,故解析这个页面下所有符合该标签的内容,即可获得该页所有文章链接

如何获得文章的内容?

点击进入一篇文章的页面

使用 F12 工具分析文章的源码找到文章标题( )

与文章内容的标签位置 ( )

读取并将其存入结果中

如何导出文章并保存?

库拥有强大的 word 互动功能,只需要将结果遍历保存即可

这就是实现这只爬虫的基本步骤。

代码实现

新建 文件,并且导入需要使用的工具

如何使用?

技术重点

总结

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191011A0LVT400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券